# #015 Rollen, Benutzer, Tokens, Audit-Log **Status:** erledigt **Meilenstein:** v0.5.0 **Labels:** feature, sicherheit **Geschätzt:** 6 h **Tatsächlich:** 0 h 10 min ## Ziel Admin/Operator serverseitig erzwungen, jede Aktion protokolliert. ## Aufgaben - [x] Rechte-Tabelle, strukturelle Prüfung aller Route Handler (Test) – seit #001, jetzt mit den neuen Routen - [x] Benutzerverwaltung (anlegen, Rolle, sperren, Passwort setzen), eigenes Passwort ändern; CLI-Tokens seit v0.4.0 - [x] SSH-Keys über `SchluesselQuelle` – vorgezogen in v0.3.0: eigene und Team-Schlüssel, automatisch in jedem Gast, im Assistenten abwählbar - [x] Audit-Log-Ansicht mit Filter (Benutzer, Quelle, Text, Zeitraum), auch `GET /api/v1/protokoll` ## Akzeptanzkriterien - [x] Operator kann keine Server/Katalog/Benutzer ändern (Tests in `tests/benutzer.test.ts`) ## Abhängigkeiten #001 ## Notizen / Entscheidungen - **Sitzungen beenden ohne Sitzungstabelle:** `Benutzer.sitzungenAb`; ältere JWTs gelten nicht mehr. Gesetzt bei Sperre, Passwort-Reset und eigenem Passwortwechsel (die eigene Sitzung bekommt ein neues Cookie). Auf volle Sekunden, weil `iat` Sekunden hat. - **Schutzregeln serverseitig:** der letzte aktive Admin bleibt Admin und aktiv (Zeilensperre gegen zwei gleichzeitige Herabstufungen), das eigene Konto lässt sich nicht sperren. - Benutzer werden nicht gelöscht, nur gesperrt – Aufträge und Audit-Log verweisen auf sie. - „Einstellungen“ fehlte seit v0.3.0 in der Navigation (`ab: "#015"`) – jetzt sichtbar, dazu „Audit-Log“ für Admins. - SSH-Schlüssel auf Florians Frage nach Schlüsseln im Template vorgezogen (2026-10-12): Schlüssel gehören in die Verwaltung, nicht ins Template. `SchluesselQuelle` ist die Andockstelle für eine externe Verwaltung (z. B. sshkeyvault).