Let admins create and delete users in Benutzerverwaltung, modernize list
Playwright Tests / test (push) Canceled after 0s

Wire up two previously-unwired stored procedures for the usr module:
- fis_admin_createUserAccount gained the missing @authaccount +
  intranet_admin auth gate, a duplicate-email check, and now returns
  the (possibly auto-generated) password so it can be emailed to the
  new user, mirroring fis_admin_resetUserPassword's pattern.
- fis_admin_delUserAccount gained the same missing auth gate plus a
  guard against an admin deleting their own account.

New /do/usr/create and /do/usr/delete endpoints in
IntranetController.AdminUsers.cs, a "Neuer Benutzer" button and a
"Benutzer löschen" ribbon action in fis.usr.js, and unit tests for the
new welcome-email content (BuildWelcomeEmail).

Also restyle the user list (fis.usr.scss) from a plain bordered table
to a card-style row grid with avatar-initial badges and status pills,
matching the Admin dashboard's visual language.

Documented as ADR 0020 and in the admin-user-management concept doc.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Stefan
2026-09-14 14:51:59 +02:00
co-authored by Claude Sonnet 5
parent 38145a917e
commit 4386a6336a
14 changed files with 716 additions and 138 deletions
+18 -1
View File
@@ -7,6 +7,20 @@ let $uct = {
, active: 'Aktiv'
, disabled: 'Deaktiviert'
, loadfail: 'Die Benutzerliste konnte nicht geladen werden.'
, empty: 'Es sind keine Benutzerkonten vorhanden.'
, newuser: 'Neuer Benutzer'
, newuser_btn: 'Neuer Benutzer'
, firstname_field: 'Vorname'
, name_field: 'Nachname'
, title_field: 'Titel'
, gender_field: 'Anrede'
, gender_m: 'Herr'
, gender_f: 'Frau'
, mobile_field: 'Mobil'
, create_sent: 'Das Benutzerkonto wurde angelegt, die Zugangsdaten wurden per E-Mail versendet.'
, create_noemail: 'Das Benutzerkonto wurde angelegt, die Zugangsdaten konnten aber nicht per E-Mail zugestellt werden.'
, delete: 'Benutzer löschen'
, delete_confirm: 'Soll der Benutzer "{0}" wirklich gelöscht werden?'
, pwdreset: 'Passwort zurücksetzen'
, pwdreset_btn: 'Zurücksetzen'
, pwd_field: 'Neues Passwort'
@@ -21,7 +35,10 @@ let $uct = {
requirements: 'Das Passwort erfüllt nicht die Mindestanforderungen (mind. 6 Zeichen).',
duplicate_email: 'Diese E-Mail-Adresse ist bereits einem anderen Benutzerkonto zugeordnet.',
reset_failed: 'Das Passwort konnte nicht zurückgesetzt werden.',
change_failed: 'Die Änderung konnte nicht gespeichert werden.'
change_failed: 'Die Änderung konnte nicht gespeichert werden.',
create_failed: 'Das Benutzerkonto konnte nicht angelegt werden.',
delete_failed: 'Der Benutzer konnte nicht gelöscht werden.',
cannot_delete_self: 'Das eigene Benutzerkonto kann nicht gelöscht werden.'
}
, err_generic: 'Die Änderung konnte nicht gespeichert werden.'
};