Aus interner Sicherheits-Review (verifiziert):
- Rapporte (GET+POST /api/rapports): Tenant-Check via getProjectWithTenantCheck
ergänzt — vorher konnte jeder eingeloggte Nutzer mit fremder projectId
Rapporte fremder Mandanten auflisten (inkl. Token → voller Inhalt) bzw.
anlegen. POST blockt jetzt zusätzlich VIEWER.
- Plan-Bild (GET .../plan-image/serve): globaler Lookup → getProjectWithTenantCheck.
- Journal-Suggestions (GET /api/tenants/[tenantId]/suggestions): Membership-Check
ergänzt (kein Cross-Tenant-Lesen mehr).
- Admin-User-Anlegen: Nicht-SERVER_ADMIN kann nur noch im EIGENEN Tenant anlegen
(mitgeschickte tenantId aus dem Body wird ignoriert) — verhindert Rechte-
Ausweitung in fremde Organisationen.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Super-Admin sieht jetzt ALLE Benutzer über alle Mandanten in einer Tabelle
(statt nur Server-Admins). Neue Spalten: Mandant, Letzte Anmeldung, Status
- Einzelne Benutzer sperren/entsperren: User.isActive (Schema + Auto-Migration),
Login-Sperre für deaktivierte Konten, PATCH /api/admin/users/[id] { isActive }
- GET /api/admin/users liefert jetzt lastLoginAt + isActive
- Selbstsperre verhindert; admin@lageplan.local geschützt
- Version 1.4.6
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>