ADR-0019 Nachtrag: Self-Service-Passwortänderung

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Thomas Stallinger 2026-08-26 09:49:42 +02:00
parent d91167b7f0
commit 5eabdbd180

View File

@ -113,3 +113,37 @@ Organization-Kontaktfelder ergänzt. `benutzer` (inkl. der neuen
Tabelle lebt in `kundenplattform`s eigener, von `provisioning-server`
getrennter Datenbank (siehe ADR-0011) und war schon vorher nicht
Bestandteil dieses Dokuments.
## Nachtrag 26.08.2026: Self-Service-Passwortänderung
Der ursprüngliche Umfang dieser ADR deckte Kontenverwaltung (Anlegen/
Löschen fremder Konten durch `require_org_admin`) ab, aber keine
Möglichkeit für einen Nutzer, sein **eigenes** Passwort zu ändern — dafür
war bislang ausschließlich das CLI-Skript `scripts/reset_password.py`
(aus der Sicherheitshärtung vom 25.08.2026) zuständig, nicht per
Self-Service erreichbar.
Neue Route `POST /organisation/passwort`, neue Sektion „Mein Konto" auf
derselben `/organisation`-Seite. Bewusst **ohne** `require_org_admin`
anders als Kontenverwaltung für Dritte braucht das eigene Passwort keine
besondere Rolle, jedes eingeloggte Konto darf es ändern. Prüft das
aktuelle Passwort über `user_manager.authenticate()` (gleiches Muster wie
der Login in `auth.py`), validiert das neue Passwort explizit gegen die
bestehende `UserManager.validate_password()`-Policy (≥12 Zeichen, nicht
gleich der E-Mail-Adresse, siehe Sicherheitshärtung 25.08.2026) und zeigt
Fehler inline auf derselben Seite statt als nackte `HTTPException`
dafür wurde die Kontext-Beschaffung aus `organisation_ansicht()` in eine
gemeinsame Hilfsfunktion `_organisation_kontext()` ausgelagert.
Bekannte, akzeptierte Einschränkung: die JWT-Session bleibt nach einer
Passwortänderung bis zu ihrem regulären Ablauf gültig (kein
Session-Revocation-Mechanismus vorhanden, war auch vorher schon so) —
ein bereits eingeloggtes Gerät wird durch eine Passwortänderung nicht
automatisch ausgeloggt.
Live auf anode verifiziert (WLAN-Test-Fixture-Konto, Passwort danach auf
den dokumentierten Fixture-Wert zurückgesetzt): falsches aktuelles
Passwort, zu kurzes neues Passwort, nicht übereinstimmende Wiederholung
liefern je `400` mit der passenden Inline-Fehlermeldung; der Erfolgsfall
liefert `303`, das alte Passwort funktioniert danach nicht mehr, das neue
sofort.