Passwort-Reset per Einmal-Link (kver reset-link)

Ohne E-Mail-System erzeugt der Admin per CLI einen Link (/reset#<token>),
gültig 72 h und einmal. Gespeichert wird nur der SHA-256 des Tokens; es
steht im Fragment und geht nur im POST-Body an die API. Der Reset meldet
alle alten Sessions ab und loggt direkt neu ein. Passwortregeln jetzt
gemeinsam in checkNewPassword.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
irrlicht
2026-10-01 21:56:05 +02:00
co-authored by Claude Opus 5.5
parent b6cf8c7fa0
commit 81a74375b7
12 changed files with 408 additions and 14 deletions
+14
View File
@@ -63,6 +63,7 @@ Konfiguration über Umgebungsvariablen:
| `KVER_ADDR` | `:8080` | Listen-Adresse im Container |
| `KVER_DSN` | _(Pflicht)_ | Postgres-Verbindung, z. B. `postgres://kver:pw@host:5432/kontrollverlust?sslmode=disable` |
| `KVER_GEOIP_ASN` | _(leer)_ | Pfad zur GeoLite2-ASN-`.mmdb`; leer = ASN-Auflösung aus |
| `KVER_BASE_URL` | _(leer)_ | Öffentliche Adresse für `kver reset-link`; leer = nur Pfad |
## GeoLite2-ASN-Datenbank (optional)
@@ -217,3 +218,16 @@ systemctl --user restart kver
Die App fährt bei SIGTERM sauber herunter (laufende Requests werden zu Ende
bedient, dann wird die DB-Verbindung geschlossen).
## Passwort zurücksetzen
Ohne E-Mail-System erzeugt der Admin einen Einmal-Link und gibt ihn dem
Nutzer persönlich:
```sh
podman exec kver kver reset-link <nutzername>
```
Der Link (`/reset#<token>`) gilt 72 Stunden und nur einmal; ein neuer Link
macht ältere desselben Nutzers ungültig. Beim Setzen des neuen Passworts
werden alle bestehenden Sessions des Nutzers abgemeldet.