feat: remove user even if in a team

This commit is contained in:
Julien Froidefond
2025-08-25 22:04:39 +02:00
parent e8138ebcb3
commit d58ee314f7
4 changed files with 10 additions and 21 deletions

View File

@@ -25,9 +25,6 @@ export async function DELETE(
if (error.message === "Utilisateur non trouvé") { if (error.message === "Utilisateur non trouvé") {
return NextResponse.json({ error: error.message }, { status: 404 }); 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; throw error;
} }
} catch (error) { } catch (error) {

View File

@@ -58,7 +58,7 @@ export function UsersList({
}, },
]} ]}
onDelete={() => onDeleteUser(user)} onDelete={() => onDeleteUser(user)}
canDelete={!user.teamName} canDelete={true}
showSeparator={userIndex > 0} showSeparator={userIndex > 0}
additionalInfo={ additionalInfo={
<p className="text-slate-500 text-xs"> <p className="text-slate-500 text-xs">

View File

@@ -57,21 +57,11 @@ export function useUsersManagement(teams: Team[], initialUsers?: any[]) {
}; };
const handleDeleteUser = async (user: User) => { const handleDeleteUser = async (user: User) => {
if (user.teamName) { const confirmMessage = user.teamName
toast({ ? `Ê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.`
title: "Action impossible", : `Ê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.`;
description:
"Retirez d'abord l'utilisateur de son équipe avant de le supprimer",
variant: "destructive",
});
return;
}
if ( if (!confirm(confirmMessage)) {
!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.`
)
) {
return; return;
} }

View File

@@ -204,10 +204,12 @@ export class UserService {
const user = userCheck.rows[0]; 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) { if (user.team_id) {
throw new Error( // Retirer l'utilisateur de son équipe
"Impossible de supprimer un utilisateur qui appartient à une équipe. Retirez-le d'abord de son équipe." await client.query(
"UPDATE users SET team_id = NULL WHERE uuid_id = $1",
[userId]
); );
} }