feat(legal): Organisationsbestätigung, Re-Consent-Gate & Admin-Ansicht (v1.7.2)

Teil 3 des Compliance-Updates — Zustimmungs-UI und Nachweis-Verwaltung:

- LegalConsentGate (blockierender Dialog): erkennt offene Pflicht-Zustimmungen nach Login,
  zeigt Organisationsbestätigung mit freundlicher Erklärung + 7 einzeln anzukreuzenden
  Pflichtbestätigungen (keine Vorauswahl) für Org-Admins, sonst Re-Consent für aktualisierte
  Nutzungsbedingungen/Datenschutz. Abmelden/Dokumente-Lesen bleiben möglich (Allowlist);
  keine stillschweigende Zustimmung. Tastatur-/Screenreader-tauglich (role=dialog)
- /konto/datenschutz: eigene Zustimmungen einsehen, Datenexport/Kontolöschung anfordern,
  Datenschutzkontakt (Route via Middleware geschützt)
- /admin/legal (nur SERVER_ADMIN): aktive Dokumentversionen, Zustimmungszahlen, fehlende
  Zustimmungen, Suche nach Benutzer, CSV-Export (minimale Nachweisdaten)
- APIs: /api/legal/my-acceptances, /api/admin/legal, /api/admin/legal/acceptances (+CSV)
- Gate ins Root-Layout eingehängt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Pepe Ziberi
2026-07-23 12:07:59 +02:00
parent 8cf1aa4dbe
commit 6ab2fd9a6b
9 changed files with 605 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ import { jwtVerify } from 'jose'
import { JWT_SECRET } from './lib/jwt-secret'
// Routes that require authentication
const PROTECTED_ROUTES = ['/app', '/settings', '/admin']
const PROTECTED_ROUTES = ['/app', '/settings', '/admin', '/konto']
// Routes that should redirect to /app if already logged in
const AUTH_ROUTES = ['/login', '/register']