Benutzer & Rollen¶
Die Benutzerverwaltung (/users) ist das Herzstück des Admin-Backends. Hier werden alle Endnutzer angelegt, konfiguriert und überwacht.
Benutzer-Tabelle¶
Die Übersicht zeigt alle registrierten User mit:
- Benutzername und Anzeigename
- E-Mail-Adresse
- Rolle (farbiger Badge)
- Status (Aktiv / Gesperrt)
- Erstellungsdatum
- Aktionen: Bearbeiten, Sperren/Aktivieren, Impersonieren, Löschen
Rollen¶
| Rolle | Beschreibung | Besonderheiten |
|---|---|---|
user |
Standard-Endnutzer | Kann Dashboard, Billing, Keys nutzen |
subscriber |
Abonnent | Kann zugewiesene Expert-Templates verwenden |
expert |
Experte | Kann eigene Templates und CC-Profile erstellen |
admin |
Administrator | Vollzugriff auf alle Funktionen |
Rollen-Vergabe
Die Rolle eines Users kann im Edit-Dialog (Tab Budget) oben links per Dropdown geändert werden. Eine Rollenänderung wird sofort gespeichert.
User anlegen¶
Über den Button + Benutzer anlegen öffnet sich ein Modal mit:
| Feld | Pflicht | Beschreibung |
|---|---|---|
| Benutzername | ✓ | Eindeutiger Loginname (a-z, 0-9, -, _) |
| ✓ | Für Passwort-Reset und Budget-Alerts | |
| Anzeigename | – | Freundlicher Name für die UI |
| Passwort | ✓ | Mindestens 8 Zeichen |
| Rolle | ✓ | Initiale Rolle (Standard: user) |
| Tägliches Limit | – | Token-Budget pro Tag |
| Monatliches Limit | – | Token-Budget pro Monat |
| Gesamt-Limit | – | Lebenszeitbudget |
Nach dem Anlegen kann optional eine Willkommens-E-Mail mit den Zugangsdaten versendet werden (erfordert SMTP-Konfiguration).
User bearbeiten – Edit-Dialog¶
Ein Klick auf einen User öffnet das Edit-Modal mit vier Tabs:
Tab: Budget¶
Enthält oben den Rollen-Selektor und den Sperr-/Aktivier-Button.
Felder:
| Feld | Beschreibung |
|---|---|
| Tägliches Limit | Max. Tokens pro Tag (leer = unlimitiert) |
| Monatliches Limit | Max. Tokens pro Monat (leer = unlimitiert) |
| Gesamt-Limit | Kumulatives Lifetime-Limit (leer = unlimitiert) |
| Budget-Typ | Abo (monatlicher Reset) oder Einmalig (kein Reset) |
Aktueller Verbrauch wird direkt darunter angezeigt (Heute / Monat / Gesamt mit EUR-Schätzung).
Tab: Freigaben¶
Hier werden die expliziten Ressourcen-Freigaben des Users verwaltet. Siehe Freigaben (Permissions) für Details.
Tab: API Keys¶
Zeigt alle API-Keys des Users mit:
- Prefix (erste 16 Zeichen des Keys)
- Label (vom User vergeben)
- Zuletzt genutzt
- Status (Aktiv / Gesperrt)
- Sperren-Button
Neue Keys können hier direkt vom Admin erstellt werden. Der vollständige Key wird einmalig angezeigt.
Tab: Verbrauch¶
Statistik-Karten: - Tokens heute / diesen Monat / gesamt - Download-Link für detaillierte JSON-Daten (letzte 30 Tage)
User sperren / aktivieren¶
- Sperren: Setzt
is_active = 0, invalidiert den Redis-Cache sofort. - Aktivieren: Setzt
is_active = 1, User kann sich sofort wieder anmelden.
Gesperrte User
Gesperrte User können sich nicht mehr anmelden und ihre API-Keys werden abgewiesen. Bestehende Sessions laufen aus.
Admin-Impersonation¶
Über den Impersonate-Button (Augen-Symbol) kann ein Admin die Sitzung eines Users übernehmen:
- Admin klickt Impersonate → wird zu
/admin/users/{uid}/impersonateweitergeleitet - Das User-Portal öffnet sich mit einem orangenen Hinweis-Banner: „Sie sind als [Username] eingeloggt (Admin-Impersonation)"
- Beenden: Klick auf Impersonation beenden → zurück zum Admin-Account
Passwort-Reset durch Admin¶
Im Edit-Dialog kann ein Admin das Passwort eines Users direkt zurücksetzen, ohne den E-Mail-Flow zu durchlaufen.
Datenbankfelder¶
CREATE TABLE users (
id TEXT PRIMARY KEY, -- UUID4 hex
username TEXT UNIQUE NOT NULL,
email TEXT UNIQUE,
display_name TEXT,
hashed_password TEXT, -- bcrypt via passlib
is_active INTEGER DEFAULT 1, -- 1=aktiv, 0=gesperrt
is_admin INTEGER DEFAULT 0,
role TEXT DEFAULT 'user',
created_at TEXT NOT NULL, -- ISO-8601 UTC
updated_at TEXT NOT NULL,
alert_enabled INTEGER DEFAULT 0,
alert_threshold_pct INTEGER DEFAULT 80,
alert_email TEXT,
last_alert_sent_at TEXT,
timezone_offset_hours REAL DEFAULT 0
);
Standard-Admin¶
Beim ersten Start wird automatisch ein Admin-Account angelegt:
| Feld | Standardwert | Env-Variable |
|---|---|---|
| Benutzername | admin |
ADMIN_USER |
| Passwort | changeme |
ADMIN_PASSWORD |
Wichtig
Das Standard-Passwort muss beim ersten Login geändert werden.