Checkpoint: Création d'un utilisateur administrateur spécial non supprimable
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
This commit is contained in:
@@ -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"}
|
||||
>
|
||||
<Trash2 className="h-4 w-4 text-red-500" />
|
||||
<Trash2 className={user.username === "adminServFormation" ? "h-4 w-4 text-gray-300" : "h-4 w-4 text-red-500"} />
|
||||
</Button>
|
||||
</div>
|
||||
</TableCell>
|
||||
@@ -483,7 +484,9 @@ export default function AdminUsers() {
|
||||
<DialogHeader>
|
||||
<DialogTitle>Modifier l'utilisateur</DialogTitle>
|
||||
<DialogDescription>
|
||||
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"}
|
||||
</DialogDescription>
|
||||
</DialogHeader>
|
||||
|
||||
@@ -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" : ""}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -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" : ""}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -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" : ""}
|
||||
/>
|
||||
<p className="text-xs text-muted-foreground mt-1">Laissez vide pour ne pas modifier</p>
|
||||
{selectedUser?.username !== "adminServFormation" && (
|
||||
<p className="text-xs text-muted-foreground mt-1">Laissez vide pour ne pas modifier</p>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
Reference in New Issue
Block a user