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é") {
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) {

View File

@@ -58,7 +58,7 @@ export function UsersList({
},
]}
onDelete={() => onDeleteUser(user)}
canDelete={!user.teamName}
canDelete={true}
showSeparator={userIndex > 0}
additionalInfo={
<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) => {
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;
}

View File

@@ -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]
);
}