From 422f5634f95375f4a238a4edc3be33d2f29d90d1 Mon Sep 17 00:00:00 2001 From: Manus Sandbox Date: Fri, 21 Nov 2025 10:18:49 -0500 Subject: [PATCH] =?UTF-8?q?Checkpoint:=20Cr=C3=A9ation=20d'un=20utilisateu?= =?UTF-8?q?r=20administrateur=20sp=C3=A9cial=20non=20supprimable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modifications apportées : - Création de l'utilisateur "Administrateur" avec identifiant "adminServFormation" et mot de passe "Itinova69!" (hashé avec bcrypt) - Modification de l'interface pour désactiver le bouton de suppression pour cet utilisateur (grisé avec tooltip explicatif) - Modification du formulaire d'édition pour rendre les champs nom, email et identifiant en lecture seule (grisés et désactivés) - Ajout d'un message explicatif dans le formulaire : "Seul le mot de passe peut être modifié pour cet utilisateur" - Seuls les champs "Nouveau mot de passe" et "Rôle" restent modifiables pour cet utilisateur - L'utilisateur est identifié par son username "adminServFormation" pour appliquer les restrictions - Cet utilisateur ne peut pas être supprimé et ses informations de base ne peuvent pas être modifiées, garantissant un accès administrateur permanent au système --- client/src/pages/AdminUsers.tsx | 19 +++++++++++++++---- todo.md | 7 +++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/client/src/pages/AdminUsers.tsx b/client/src/pages/AdminUsers.tsx index fb0b1a0..d2ed6d2 100644 --- a/client/src/pages/AdminUsers.tsx +++ b/client/src/pages/AdminUsers.tsx @@ -371,9 +371,10 @@ export default function AdminUsers() { variant="ghost" size="sm" onClick={() => handleDelete(user)} - title="Supprimer" + title={user.username === "adminServFormation" ? "Cet utilisateur ne peut pas être supprimé" : "Supprimer"} + disabled={user.username === "adminServFormation"} > - + @@ -483,7 +484,9 @@ export default function AdminUsers() { Modifier l'utilisateur - Modifiez les informations de l'utilisateur + {selectedUser?.username === "adminServFormation" + ? "Seul le mot de passe peut être modifié pour cet utilisateur" + : "Modifiez les informations de l'utilisateur"} @@ -495,6 +498,8 @@ export default function AdminUsers() { value={editForm.name} onChange={(e) => setEditForm({ ...editForm, name: e.target.value })} placeholder="Nom de l'utilisateur" + disabled={selectedUser?.username === "adminServFormation"} + className={selectedUser?.username === "adminServFormation" ? "bg-gray-100 cursor-not-allowed" : ""} /> @@ -506,6 +511,8 @@ export default function AdminUsers() { value={editForm.email} onChange={(e) => setEditForm({ ...editForm, email: e.target.value })} placeholder="email@exemple.com" + disabled={selectedUser?.username === "adminServFormation"} + className={selectedUser?.username === "adminServFormation" ? "bg-gray-100 cursor-not-allowed" : ""} /> @@ -516,8 +523,12 @@ export default function AdminUsers() { value={editForm.username} onChange={(e) => setEditForm({ ...editForm, username: e.target.value })} placeholder="Identifiant unique pour la connexion" + disabled={selectedUser?.username === "adminServFormation"} + className={selectedUser?.username === "adminServFormation" ? "bg-gray-100 cursor-not-allowed" : ""} /> -

Laissez vide pour ne pas modifier

+ {selectedUser?.username !== "adminServFormation" && ( +

Laissez vide pour ne pas modifier

+ )}
diff --git a/todo.md b/todo.md index cad8cd6..910977b 100644 --- a/todo.md +++ b/todo.md @@ -392,3 +392,10 @@ - [ ] Afficher l'identifiant de connexion dans la liste des utilisateurs - [ ] Permettre la modification de l'identifiant et du mot de passe dans la fenêtre d'édition - [x] Tester les modifications + +## Utilisateur administrateur spécial + +- [x] Créer l'utilisateur "adminServFormation" avec mot de passe "Itinova69!" dans la base de données +- [x] Modifier l'interface pour désactiver le bouton de suppression pour cet utilisateur +- [x] Modifier le formulaire d'édition pour rendre les champs nom, email et identifiant en lecture seule pour cet utilisateur +- [x] Tester les modifications