feat: check for existing orders before user deletion and offer to lock instead
Some checks failed
Staging Build / build (push) Has been cancelled
Some checks failed
Staging Build / build (push) Has been cancelled
This commit is contained in:
@@ -64,7 +64,13 @@ export function UserList({ initialUsers, companies }: UserListProps) {
|
|||||||
router.refresh()
|
router.refresh()
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
console.error('Fehler beim Löschen des Benutzers:', e)
|
console.error('Fehler beim Löschen des Benutzers:', e)
|
||||||
|
if (e.message?.includes('Belege')) {
|
||||||
|
if (confirm('Auf diesen User gibt es bereits Belege. Sperren möglich. Möchten Sie diesen Benutzer stattdessen sperren?')) {
|
||||||
|
await handleRoleChange(id, 'gesperrt')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
alert('Fehler beim Löschen: ' + (e.message || JSON.stringify(e)))
|
alert('Fehler beim Löschen: ' + (e.message || JSON.stringify(e)))
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
setLoadingId(null)
|
setLoadingId(null)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,21 @@ export async function createUser(data: { email: string; role?: 'admin' | 'partne
|
|||||||
export async function deleteUser(id: string) {
|
export async function deleteUser(id: string) {
|
||||||
try {
|
try {
|
||||||
const admin = createAdminClient();
|
const admin = createAdminClient();
|
||||||
|
|
||||||
|
// Check if user has orders (documents/belege)
|
||||||
|
const { count, error: countError } = await admin
|
||||||
|
.from('orders')
|
||||||
|
.select('*', { count: 'exact', head: true })
|
||||||
|
.eq('user_id', id);
|
||||||
|
|
||||||
|
if (countError) {
|
||||||
|
console.error('Failed to count user orders:', countError);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count && count > 0) {
|
||||||
|
throw new Error('Auf diesen User gibt es bereits Belege. Sperren möglich.');
|
||||||
|
}
|
||||||
|
|
||||||
// Delete from public.users first to satisfy foreign key constraints
|
// Delete from public.users first to satisfy foreign key constraints
|
||||||
const { error: dbError } = await admin.from('users').delete().eq('id', id);
|
const { error: dbError } = await admin.from('users').delete().eq('id', id);
|
||||||
if (dbError) {
|
if (dbError) {
|
||||||
|
|||||||
Reference in New Issue
Block a user