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:
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user