admin eb57a6eccf Admin-Dashboard: Konten sperren/loeschen, Audit-Log, DSGVO-Export
- Neue Seite admindash (pgAdminDash) mit Kontenuebersicht: Status,
  Patientenanzahl, Sperren/Entsperren/Loeschen mit Pflicht-Begruendung
- "Loeschen" ist bewusst Soft-Delete: Konto wird gesperrt (aktiv=0) und
  alle aktiven Patienten werden ueber die bestehende Archivierungs-
  Logik archiviert (10/30 Jahre Aufbewahrungsfrist, § 630f/§ 199 BGB)
  statt physisch geloescht zu werden
- Bestehende Hard-Delete-Route (DELETE /api/nutzer/<uid>) lehnt jetzt
  ab, solange das Konto noch Patienten besitzt - schliesst die Luecke
  verwaister Patientendatensaetze
- nutzer.aktiv wird bei jedem Request geprueft -> Sperren wirkt sofort,
  auch bei bereits offener Sitzung, ohne zusaetzlichen Session-Store
- Neue Tabelle admin_audit_log (unveraenderlich, analog notizen_verlauf):
  jede Sperr-/Entsperr-/Loesch-/Export-Aktion mit Admin, Zeitstempel,
  Ziel und Pflicht-Begruendung protokolliert
- DSGVO-Export (POST /api/admin/patienten/<pid>/dsgvo-export): admin-only,
  verlangt Rechtsgrundlage/Aktenzeichen, liefert ZIP mit allen
  Datensaetzen (daten.json) plus Dokumenten/Briefen/Fotos, in-memory
  ohne Temp-Dateien
- Selbst-Sperrung/-Loeschung durch den handelnden Admin blockiert
  (kein Lockout-Risiko)
- GET /api/nutzer liefert jetzt zusaetzlich patienten_anzahl

Verifiziert: API-Tests fuer alle Guards (Begruendung-Pflicht, Self-Lock-
Block, Hard-Delete-Block bei zugeordneten Patienten, sofortige Session-
Sperrung, 403 fuer Nicht-Admins), ZIP-Inhalt geprueft, Audit-Log-Eintraege
korrekt, Dashboard + Modal per Playwright-Screenshot visuell verifiziert.

Dritter und letzter Baustein aus refactoring.md.
2026-07-18 10:57:58 +02:00
S
Description
No description provided
1.7 MiB
1 Stars 1 Watchers 0 Forks
Languages
Python 48%
TypeScript 33.6%
HTML 17.9%
Dockerfile 0.2%
CSS 0.2%