Gesamtprojekt: Nachtrag 43 -- SHL-02 Portal-Katalog-Erweiterung mit echten Rechten gemergt

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
rootandClaude Sonnet 5 committed 2026-09-26 19:40:24 +00:00
1 parent 925f8d6214
commit f3a064a44c
1 file changed
+20
+20
View File
@@ -1098,3 +1098,23 @@ Migrationskollision `workflow/migrations/tenant/0004` (drei verschiedene Migrati
- Core-Admin: `core.tenant.read`, `core.tenant.admin`
(Echte Durchsetzung real nur für Mail (`mail.message.read`) und Connect (`connect.status.read`) getestet.)
## Nachtrag 43 — SHL-02: Portal-Katalog-Erweiterung (echte Rechte)
Datum: 2026-09-26. Merge von PR #214 (`feature/shl-02-portal-katalog-erweiterung`) nach `main`.
**Ausgangslage:** Erster Versuch, den Portal-Katalog (`web/portal/config/modules.json`) auf über 20 Apps zu erweitern, wurde zu Recht abgebrochen — die 6 bestehenden Einträge nutzten erfundene `permission`-Werte, die real nirgends in Core's `policy_rules`-Katalog existierten. RBAC-12 (PR #213, Nachtrag 42) hat das behoben: 28 echte, granulare Rechte für Mail/Workflow/AI/Connect/Core-Admin angelegt (DMS hatte schon echte Rechte). Dieser Merge zieht die Portal-Erweiterung mit den jetzt echten Schlüsseln nach.
**Ergebnis:** Katalog von 6 auf 12 Einträge erweitert, ausschließlich mit real existierenden `policy_rules`-Schlüsseln. Neun Apps bewusst ausgelassen (kein passendes reales Recht vorhanden, nicht erfunden): `account`, `audit-log`, `compliance-reports`, `dms2-import`, `kennzahlen-dashboard`, `lic-admin`, `notifications`, `retention-admin`, `status-page`. Neuer Test (`web/portal/lib/modules.test.ts`) prüft jeden Katalog-Eintrag gegen die reale Rechte-Liste, damit kein erfundener Schlüssel mehr unbemerkt durchrutscht.
**Offener, ehrlich dokumentierter Vorbehalt (aus RBAC-12 übernommen):** echte Durchsetzung existiert bisher nur für `mail.message.read` und `connect.status.read`. Die Workflow-, AI- und Core-Admin-Kacheln sind technisch für jeden mit irgendeinem gültigen Recht sichtbar, bis die Durchsetzung dort nachgezogen wird (separates, noch offenes Nachfolgewerk).
**Verifikation (Host 204, frischer Klon `/root/merge-shl02`):**
- `go build`/`go vet` (Core-Modul): sauber
- `web/portal`: 12/12 Vitest PASS, `tsc --noEmit` sauber (nach dem etablierten `@nexarch/shl`-Symlink→Kopie-Fix), `next build` erfolgreich
- `check-port-defaults.sh`: PASS
- `e2e-core-dms.sh`: PASS (`TestCoreE2E_TokenJWKSAndPolicy`, 10/10 Unterfälle)
- `gesamt-token-smoke.sh`: **45/45 bestanden, GESAMT-FEHLER=0**, Rückbau-Snapshot identisch
- `migrations-fresh-check.sh`: an bekannter, vorbestehender `TEST_TENANT_DSN_B`-Umgebungslücke abgebrochen (keine Regression durch diesen Merge)
**Neuer main-Head:** `925f8d6214adbc4d53b3cc2e300d75df7dfb9d54` (vorher `89a1c62b8bcb0cd81e6e57780e13414cd6c480df`). Kein Deploy — Rollout auf 131 bleibt separat.