feat: Phase 5 – Berechtigungssystem (User-Module-Zuweisung, Gateway-Access-Control)
This commit is contained in:
@@ -8,7 +8,7 @@ Der Arbeitsplan sieht zehn inkrementelle Phasen vor. Nach jeder Phase muss das S
|
||||
| 2 | Benutzerverwaltung | ✅ Abgeschlossen |
|
||||
| 3 | Modul-System (Manifest, Installation, Lifecycle) | ✅ Abgeschlossen |
|
||||
| 4 | Gateway & dynamisches Routing (`/slug`) | ✅ Abgeschlossen |
|
||||
| 5 | Berechtigungssystem (User ↔ Module) | ⏳ Geplant |
|
||||
| 5 | Berechtigungssystem (User ↔ Module) | ✅ Abgeschlossen |
|
||||
| 6 | Modul-API (`/health`, `/api/manifest`, `/api/me`) | ⏳ Geplant |
|
||||
| 7 | Referenzmodul Kalender | ⏳ Geplant |
|
||||
| 8 | Modul-SDK (`platform-module-sdk`) | ⏳ Geplant |
|
||||
@@ -81,9 +81,21 @@ Definition of Done: Module sind über `/slug` erreichbar, Zugriff nur mit gülti
|
||||
- [x] Backend-Tests: 81 bestanden (inkl. 9 Gateway-Tests)
|
||||
- [x] E2E verifiziert: `/demo` → 200 (Modul-Inhalt), `/demo/health` → 200, unbekanntes Modul → 404, ohne Login → 401, USER → 403, gestopptes Modul → 503
|
||||
|
||||
## Nächste Schritte (Phase 5 – Berechtigungssystem)
|
||||
## Phase 5 – Berechtigungssystem (abgeschlossen)
|
||||
|
||||
- `user_module_permissions`-Tabelle (GRANTED/DENIED)
|
||||
- Admin-API: Benutzer ↔ Module zuweisen (`POST /api/v1/users/:id/modules/:moduleId`)
|
||||
- Gateway-Permission-Check an die Tabelle anbinden (USER mit GRANTED → Zugriff)
|
||||
- Dashboard: Modul-Kacheln anhand der tatsächlichen Berechtigungen
|
||||
Definition of Done: User ↔ Module-Zuweisung, Access Control, Permission Middleware, 401/403-Handling.
|
||||
|
||||
- [x] `user_module_permissions`-Tabelle (Migration 003, GRANTED/DENIED, UNIQUE user+module, CASCADE)
|
||||
- [x] Admin-API: `GET/POST/DELETE /api/v1/users/:userId/modules(/:moduleId)` (nur ADMIN, auditiert)
|
||||
- [x] Gateway-Permission-Check an Tabelle angebunden: ADMIN immer, USER nur mit GRANTED (fail-closed)
|
||||
- [x] `GET /api/v1/profile/modules`: Dashboard-Module (ADMIN: alle aktivierten, USER: nur freigegebene)
|
||||
- [x] Frontend: Dashboard-Modul-Kacheln ausschließlich nach tatsächlichen Berechtigungen
|
||||
- [x] Frontend: Berechtigungs-Modal in der Benutzerverwaltung (Freigeben/Entziehen pro Modul)
|
||||
- [x] Backend-Tests: 90 bestanden (inkl. ModulePermissionsService, Gateway GRANTED-Fall)
|
||||
- [x] Testszenarien aus Arbeitsplan abgedeckt: Admin → alle Module; User ohne Berechtigung → 403; User mit GRANTED → Proxy weitergeleitet
|
||||
|
||||
## Nächste Schritte (Phase 6 – Modul-API)
|
||||
|
||||
- `GET /health`, `GET /api/manifest`, `GET /api/me` als verbindlicher Modul-Vertrag
|
||||
- Zentrale Authentifizierung zwischen Plattform und Modul (Identitäts-Header validieren)
|
||||
- Referenzmodul um den vollständigen API-Vertrag erweitern
|
||||
Reference in New Issue
Block a user