From d58ee314f7f3626d670c2bcf01b9452f684e236b Mon Sep 17 00:00:00 2001 From: Julien Froidefond Date: Mon, 25 Aug 2025 22:04:39 +0200 Subject: [PATCH] feat: remove user even if in a team --- app/api/admin/users/[userId]/route.ts | 3 --- components/admin/users/users-list.tsx | 2 +- hooks/use-users-management.ts | 18 ++++-------------- services/user-service.ts | 8 +++++--- 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/app/api/admin/users/[userId]/route.ts b/app/api/admin/users/[userId]/route.ts index 038772f..167ca3e 100644 --- a/app/api/admin/users/[userId]/route.ts +++ b/app/api/admin/users/[userId]/route.ts @@ -25,9 +25,6 @@ export async function DELETE( if (error.message === "Utilisateur non trouvé") { return NextResponse.json({ error: error.message }, { status: 404 }); } - if (error.message.includes("appartient à une équipe")) { - return NextResponse.json({ error: error.message }, { status: 409 }); - } throw error; } } catch (error) { diff --git a/components/admin/users/users-list.tsx b/components/admin/users/users-list.tsx index 0b26044..15f115e 100644 --- a/components/admin/users/users-list.tsx +++ b/components/admin/users/users-list.tsx @@ -58,7 +58,7 @@ export function UsersList({ }, ]} onDelete={() => onDeleteUser(user)} - canDelete={!user.teamName} + canDelete={true} showSeparator={userIndex > 0} additionalInfo={

diff --git a/hooks/use-users-management.ts b/hooks/use-users-management.ts index 3e098ed..92171c8 100644 --- a/hooks/use-users-management.ts +++ b/hooks/use-users-management.ts @@ -57,21 +57,11 @@ export function useUsersManagement(teams: Team[], initialUsers?: any[]) { }; const handleDeleteUser = async (user: User) => { - if (user.teamName) { - toast({ - title: "Action impossible", - description: - "Retirez d'abord l'utilisateur de son équipe avant de le supprimer", - variant: "destructive", - }); - return; - } + const confirmMessage = user.teamName + ? `Êtes-vous sûr de vouloir supprimer définitivement ${user.firstName} ${user.lastName} ?\n\n⚠️ Cet utilisateur sera automatiquement retiré de l'équipe "${user.teamName}"\n\nCette action supprimera aussi toutes ses évaluations par skills et est irréversible.` + : `Êtes-vous sûr de vouloir supprimer définitivement ${user.firstName} ${user.lastName} ?\n\nCette action supprimera aussi toutes ses évaluations par skills et est irréversible.`; - if ( - !confirm( - `Êtes-vous sûr de vouloir supprimer définitivement ${user.firstName} ${user.lastName} ?\n\nCette action supprimera aussi toutes ses évaluations par skills et est irréversible.` - ) - ) { + if (!confirm(confirmMessage)) { return; } diff --git a/services/user-service.ts b/services/user-service.ts index 50a99d3..d8b5d97 100644 --- a/services/user-service.ts +++ b/services/user-service.ts @@ -204,10 +204,12 @@ export class UserService { const user = userCheck.rows[0]; - // Vérifier que l'utilisateur n'est pas dans une équipe + // Si l'utilisateur est dans une équipe, le retirer automatiquement if (user.team_id) { - throw new Error( - "Impossible de supprimer un utilisateur qui appartient à une équipe. Retirez-le d'abord de son équipe." + // Retirer l'utilisateur de son équipe + await client.query( + "UPDATE users SET team_id = NULL WHERE uuid_id = $1", + [userId] ); }