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")); }