fix: DSGVO-Rolle sieht Menüpunkte in Einstellungen wieder

System-Block in Settings.tsx war komplett in
hasPermission('settings:update') gewickelt. DSGVO-User haben aber nur
audit:* und gdpr:* Perms – kein settings:update – und sahen damit
weder DSGVO-Dashboard, Datenschutzerklärung, Vollmacht-Vorlage,
Impressum, Website-Datenschutz, E-Mail-Versandlog noch Audit-Log.

Outer-Check auf (settings:update || audit:read || gdpr:admin)
erweitert. Innere Per-Card-Checks bleiben unverändert, sodass jeder
User nur das sieht, wofür er Perms hat.

Backend-API mit reinem DSGVO-Token gegengetestet: alle 9 Endpoints
liefern 200 – Routes hatten kein Permission-Problem.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 08:44:48 +02:00
parent 6ae815393e
commit 95541e8ac4
2 changed files with 26 additions and 1 deletions
+7 -1
View File
@@ -88,7 +88,13 @@ export default function Settings() {
</div>
{/* System-Einstellungen */}
{hasPermission('settings:update') && (
{/*
Outer-Check umfasst BEWUSST `settings:update`, `audit:read` und
`gdpr:admin`, sonst sieht die DSGVO-Rolle (nur audit/gdpr-Perms, kein
`settings:update`) die DSGVO-/Audit-Karten gar nicht. Jede Karte
innerhalb hat ihren eigenen feingranularen Check.
*/}
{(hasPermission('settings:update') || hasPermission('audit:read') || hasPermission('gdpr:admin')) && (
<div className="mb-8">
<h2 className="text-lg font-semibold mb-4 text-gray-700">System</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">