fix(users): refactor user admin actions to return status objects instead of throwing to prevent production error obfuscation
All checks were successful
Staging Build / build (push) Successful in 3m29s

This commit is contained in:
DanielS
2026-07-03 13:51:00 +02:00
parent 12d06e46ad
commit 38651037bc
3 changed files with 154 additions and 94 deletions

View File

@@ -96,12 +96,17 @@ export function UserDialog({ companies }: UserDialogProps) {
first_name: values.first_name || undefined,
last_name: values.last_name || undefined,
}
await createUser(payload)
setOpen(false)
form.reset()
router.refresh()
const res = await createUser(payload)
if (res.success) {
setOpen(false)
form.reset()
router.refresh()
} else {
alert(res.error || 'Fehler beim Erstellen des Benutzers.')
}
} catch (error) {
console.error('Error creating user:', error)
alert('Ein unerwarteter Fehler ist aufgetreten.')
}
}

View File

@@ -63,17 +63,22 @@ export function UserList({ initialUsers, companies }: UserListProps) {
if (confirm('Möchten Sie diesen Benutzer wirklich löschen?')) {
setLoadingId(id)
try {
await deleteUser(id)
router.refresh()
const res = await deleteUser(id)
if (res.success) {
router.refresh()
} else {
console.error('Fehler beim Löschen des Benutzers:', res.error)
if (res.error?.includes('Belege')) {
if (confirm('Löschen nicht möglich! Auf diesen User existieren bereits Belege. Möchten Sie diesen Benutzer stattdessen sperren?')) {
await handleRoleChange(id, 'gesperrt')
}
} else {
alert('Fehler beim Löschen: ' + res.error)
}
}
} catch (e: any) {
console.error('Fehler beim Löschen des Benutzers:', e)
if (e.message?.includes('Belege')) {
if (confirm('Löschen nicht möglich! Auf diesen User existieren bereits Belege. 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 {
setLoadingId(null)
}
@@ -83,10 +88,15 @@ export function UserList({ initialUsers, companies }: UserListProps) {
const handleRoleChange = async (id: string, newRole: Role) => {
setLoadingId(id + '-role')
try {
await updateUserRole(id, newRole)
router.refresh()
} catch (e) {
const res = await updateUserRole(id, newRole)
if (res.success) {
router.refresh()
} else {
alert(res.error || 'Fehler beim Ändern der Rolle.')
}
} catch (e: any) {
console.error('Fehler beim Ändern der Rolle:', e)
alert('Fehler beim Ändern der Rolle: ' + (e.message || JSON.stringify(e)))
} finally {
setLoadingId(null)
}
@@ -96,10 +106,15 @@ export function UserList({ initialUsers, companies }: UserListProps) {
const newRole = currentRole === 'gesperrt' ? 'partner' : 'gesperrt'
setLoadingId(id + '-lock')
try {
await updateUserRole(id, newRole)
router.refresh()
} catch (e) {
const res = await updateUserRole(id, newRole)
if (res.success) {
router.refresh()
} else {
alert(res.error || 'Fehler beim Sperren/Entsperren.')
}
} catch (e: any) {
console.error('Fehler beim Sperren/Entsperren:', e)
alert('Fehler beim Sperren/Entsperren: ' + (e.message || JSON.stringify(e)))
} finally {
setLoadingId(null)
}
@@ -241,10 +256,15 @@ export function UserList({ initialUsers, companies }: UserListProps) {
const val = e.target.value.trim()
if (val !== (user.first_name || '')) {
try {
await updateUserProfile(user.id, { first_name: val || null, last_name: user.last_name })
router.refresh()
} catch (err) {
const res = await updateUserProfile(user.id, { first_name: val || null, last_name: user.last_name })
if (res.success) {
router.refresh()
} else {
alert(res.error || 'Fehler beim Aktualisieren des Vornamens.')
}
} catch (err: any) {
console.error('Failed to update first name:', err)
alert('Fehler beim Aktualisieren des Vornamens: ' + (err.message || JSON.stringify(err)))
}
}
}}
@@ -263,10 +283,15 @@ export function UserList({ initialUsers, companies }: UserListProps) {
const val = e.target.value.trim()
if (val !== (user.last_name || '')) {
try {
await updateUserProfile(user.id, { first_name: user.first_name, last_name: val || null })
router.refresh()
} catch (err) {
const res = await updateUserProfile(user.id, { first_name: user.first_name, last_name: val || null })
if (res.success) {
router.refresh()
} else {
alert(res.error || 'Fehler beim Aktualisieren des Nachnamens.')
}
} catch (err: any) {
console.error('Failed to update last name:', err)
alert('Fehler beim Aktualisieren des Nachnamens: ' + (err.message || JSON.stringify(err)))
}
}
}}