From 67336c64fe43fbc787b92954b4fc2b8eaada3326 Mon Sep 17 00:00:00 2001 From: Julien Martin Date: Thu, 10 Sep 2026 22:38:57 +0200 Subject: [PATCH] fix(#160): un gestionnaire ne peut plus supprimer un autre depuis la fiche. Co-authored-by: Cursor --- .../creation/gestionnaires_create.dart | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart b/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart index 628bf89..38b67e2 100644 --- a/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart +++ b/frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart @@ -8,6 +8,7 @@ import 'package:p_tits_pas/models/user.dart'; import 'package:p_tits_pas/services/auth_service.dart'; import 'package:p_tits_pas/services/relais_service.dart'; import 'package:p_tits_pas/services/user_service.dart'; +import 'package:p_tits_pas/utils/staff_deletion_rights.dart'; import 'package:p_tits_pas/widgets/admin/common/suppression_confirm_dialog.dart'; class AdminUserFormDialog extends StatefulWidget { @@ -44,6 +45,7 @@ class _AdminUserFormDialogState extends State { List _relais = []; String? _selectedRelaisId; String? _currentUserId; + String? _currentUserRole; bool get _isEditMode => widget.initialUser != null; bool get _isSuperAdminTarget => (widget.initialUser?.role ?? '').toLowerCase() == 'super_admin'; @@ -51,7 +53,12 @@ class _AdminUserFormDialogState extends State { _isEditMode && _currentUserId != null && widget.initialUser!.id == _currentUserId; - bool get _canDeleteTarget => !_isSuperAdminTarget && !_isSelfTarget; + /// Gestionnaire : pas de delete staff. Admin+ seulement (#154 / #160). + bool get _canDeleteTarget { + if (!_isEditMode || widget.readOnly) return false; + if (_isSelfTarget || _isSuperAdminTarget) return false; + return canDeleteGestionnaire(_currentUserRole); + } bool get _isLockedAdminIdentity => _isEditMode && widget.adminMode && _isSuperAdminTarget; String get _targetRoleKey { @@ -126,6 +133,7 @@ class _AdminUserFormDialogState extends State { if (cached != null) { setState(() { _currentUserId = cached.id; + _currentUserRole = cached.role; }); return; } @@ -133,6 +141,7 @@ class _AdminUserFormDialogState extends State { if (!mounted || refreshed == null) return; setState(() { _currentUserId = refreshed.id; + _currentUserRole = refreshed.role; }); }