From 9b095e3b3b495d073ea8092760df8810d997bee6 Mon Sep 17 00:00:00 2001 From: JSR Date: Wed, 18 Mar 2026 17:51:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=90=86=E7=94=B1=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E6=9D=83=E9=99=90=E6=A0=A1=E9=AA=8C=E8=AF=AF=E7=94=A8?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=20sender=20=E5=AF=BC=E8=87=B4=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E8=A2=AB=E6=8B=92=E7=BB=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/commands/reason.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src-tauri/src/commands/reason.rs b/src-tauri/src/commands/reason.rs index cbb7010..ff8c730 100644 --- a/src-tauri/src/commands/reason.rs +++ b/src-tauri/src/commands/reason.rs @@ -39,10 +39,14 @@ pub struct DeleteResult { pub changes: i32, } -fn check_admin_permission(state: &Arc>) -> bool { +fn check_admin_permission(state: &Arc>, sender_id: Option) -> bool { let state_guard = state.read(); let mut permissions = state_guard.permissions.write(); - permissions.require_permission(0, PermissionLevel::Admin) + if let Some(id) = sender_id { + permissions.require_permission(id, PermissionLevel::Admin) + } else { + false + } } #[tauri::command] @@ -87,9 +91,10 @@ pub async fn reason_query( #[tauri::command] pub async fn reason_create( state: State<'_, Arc>>, + sender_id: Option, data: CreateReason, ) -> Result, String> { - if !check_admin_permission(&state) { + if !check_admin_permission(&state, sender_id) { return Ok(IpcResponse::error("Permission denied: admin required")); } @@ -129,10 +134,11 @@ pub async fn reason_create( #[tauri::command] pub async fn reason_update( state: State<'_, Arc>>, + sender_id: Option, id: i32, data: UpdateReason, ) -> Result, String> { - if !check_admin_permission(&state) { + if !check_admin_permission(&state, sender_id) { return Ok(IpcResponse::error("Permission denied: admin required")); } @@ -180,9 +186,10 @@ pub async fn reason_update( #[tauri::command] pub async fn reason_delete( state: State<'_, Arc>>, + sender_id: Option, id: i32, ) -> Result, String> { - if !check_admin_permission(&state) { + if !check_admin_permission(&state, sender_id) { return Ok(IpcResponse::error("Permission denied: admin required")); }