- Schema-Migration: ON DELETE SET NULL fuer incidents.created_by, magic_links.user_id,
network_analyses.created_by (behebt 500er beim User-Loeschen). Neue Spalte
licenses.unlimited_budget. Neue Tabellen portal_audit_log, portal_login_attempts.
- Audit-Log: alle CREATE/UPDATE/DELETE auf Org/User/Lizenz/Quelle + Login-Events
werden mit before/after-Diff in portal_audit_log geschrieben.
- Brute-Force-Schutz: 5 Fehlversuche pro IP+Username/15min -> 429 mit Retry-After.
- Token-Budget: expliziter Schalter unlimited_budget pro Lizenz. UI zeigt ehrlich
>100%-Verbrauch (kein Math.min mehr) und ungebremste Anzeige bei unlimited.
- Neuer Audit-Log Tab mit Filter (Aktion/Ressource/Admin/Zeitraum) und Pagination.
- Backend liefert usage_by_source im current-Endpoint
- Monatliche Tabelle zeigt Quelle-Badge (Monitor/Globe)
- Source-Split unter den Kosten-KPIs sichtbar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- network_access Spalte in UserResponse Model
- PUT /api/users/{id}/network-access Toggle-Endpoint
- Dashboard: Netzwerk-Spalte mit An/Aus-Button in User-Tabelle
Ursache: UserResponse hatte kein globe_access Feld, response_model
filterte es aus der API-Antwort. Checkbox zeigte immer false.
UI: Checkbox durch An/Aus Toggle-Button ersetzt (gruen/grau).
Nach Klick wird Liste neu geladen und zeigt korrekten DB-State.
Tabellen-Reload nach erfolgreichem Toggle entfernt.
Checkbox bleibt im angeklickten Zustand, DB wird korrekt aktualisiert.
Nur bei API-Fehler wird die Tabelle neu geladen.
Neue Spalte "Globe" in der Nutzertabelle mit Toggle-Checkbox.
API-Endpoint PUT /api/users/{id}/globe-access.
Steuert das globe_access Feld in der geteilten DB.
sourceSubTabs vom Haupt-Navigation-Handler ausgeschlossen -
verhindert dass Source-Sub-Tabs die Hauptnavigation stören
und Inhalte unterhalb anderer Tabs angezeigt werden.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Name-Spalte aus Nutzertabelle entfernt
- Anzeigename-Feld aus Nutzer-Anlegen-Dialog entfernt
- Username wird automatisch aus Email-Prefix generiert
- UserCreate Model: username jetzt optional
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>