Files
Rbm.FamStack/docs/adr/0010-benutzerlebenszyklus.md
T
2026-10-09 18:54:02 +02:00

2.6 KiB
Raw Blame History

ADR-0010: Benutzerlebenszyklus – Deaktivieren, Ablauf, Löschen, PIN-Login

  • Status: akzeptiert
  • Datum: 2026-10-09

Entscheidung

Anmelden verweigern: AppSignInManager.CanSignInAsync lehnt deaktivierte, gelöschte und abgelaufene Konten ab (AppUser.CanSignIn). Der Login-Endpunkt meldet „deaktiviert oder abgelaufen“ (403) nur bei korrektem Passwort, sonst die allgemeine Fehlermeldung (401) – der Kontostatus wird nicht ohne Passwort preisgegeben.

Laufende Sitzungen: Bei sicherheitsrelevanten Änderungen (Rolle, aktiv/inaktiv, Ablaufdatum, Löschen, Passwort-Reset) wird der Security Stamp erneuert; das Cookie wird spätestens nach 5 Minuten ungültig. Zusätzlich steht das Ablaufdatum eines Gastzugangs als Claim fp:expires_at im Cookie und wird von der Fallback-Policy bei jedem Request geprüft – ein Gast verliert den Zugriff also exakt zum Ablaufzeitpunkt, ohne Datenbankabfrage.

Löschen = Soft Delete mit Anonymisierung: AppUser implementiert ISoftDeletable (globaler Query-Filter, auch für Identity). Beim Löschen bleiben Id und Anzeigename (für Verlauf, Audit, spätere Zuordnungen), Benutzername wird zu geloescht-<id> (der Name ist danach wieder frei), E-Mail, Passwort-Hash, PIN und Profilbild werden entfernt.

Letzter Admin: AdminGuard.WouldRemoveLastActiveAdmin verhindert, dass der letzte aktive (nicht abgelaufene, nicht gelöschte) Administrator gelöscht, deaktiviert, mit Ablaufdatum versehen oder herabgestuft wird (409 Conflict).

Eine Rolle je Benutzer: Die Admin-Oberfläche vergibt genau eine der vier Rollen; ein Rollenwechsel ersetzt die bisherige.

Passwort-Reset durch Admin: Neues vorläufiges Passwort (über Reset-Token, damit Passwortregeln greifen), MustChangePassword = true, Kontosperre wird aufgehoben.

PIN-Login (vorbereitet): Admins können für Kinder eine 4–6-stellige PIN setzen (gehasht wie Passwörter). POST /api/auth/pin-login existiert, ist aber nur aktiv, wenn Features:PinLogin=true gesetzt ist (Standard: aus → 404). Fehlversuche zählen zur normalen Kontosperre. Die Tablet-Oberfläche (Profilauswahl + Ziffernblock) folgt mit dem Wand-Tablet-Modus (Backlog).

Audit-Log: Alle administrativen Aktionen schreiben einen Eintrag (AuditLog-Tabelle) mit Anzeigename des Handelnden, Aktion, Ziel und Änderungsdetails (alt → neu, keine Passwörter). Ansicht mit Paging im Adminbereich.

Konsequenzen

Gelöschte Benutzer bleiben als Datensatz erhalten (Verweise in Aufgaben/Terminen/Chat bleiben gültig). Eine endgültige Löschung (DSGVO-Auskunft/Löschung) kann später als eigener Admin-Vorgang ergänzt werden.