BUG: 5 statische Route-Permissions inkonsistent zu Backend/Manifest — 2 Phantom-Permissions (communication:read, activity:read), /wiki ungeschützt #358

Closed
opened 2026-08-27 18:05:48 +00:00 by Leopoldadmin · 0 comments
Owner

Live gemessen 2026-08-27 (Kritikpunkte 7+8 Verify-first-Audit, statischer Router frontend/src/routes/index.tsx vs. Backend/Manifest):

Route Vorher (statisch) Backend-Wahrheit Manifest Bewertung
/communication communication:read comm:read (kommunikation/routes.py durchgängig) comm:read Phantom-Permission — communication:read wird nirgends registriert (CORE_PERMISSIONS: nein; kommunikation-Plugin: nur comm:*) → Nicht-Admins mit gültigem comm:read bekamen die Seite nie
/mail/settings mail:read mail:config (routes.py:234ff Settings-Endpoints) mail:config Zu schwach — jeder mail-lesende User sah Settings-Seite, deren API ihm 403 lieferte
/import-export contacts:read import_export:read (app/routes/import_export.py:107) Falsche Permission; Kritik-Korrekturen: import_export ist KEIN Plugin (Existenz geprüft: keins) sondern Core-Modul; import_export:read ist in CORE_PERMISSIONS registriert (Zeile 59)
/activity activity:read — (Seite nutzt Audit-API) Phantom-Permission — nirgends registriert; korrekt ist audit:read (CORE_PERMISSIONS Zeile 30)
/wiki ungeschützt wiki:read (wiki/routes.py:30) wiki:read Fehlender Schutz im statischen Router

Fix (f27f047): Alle 5 statischen Route-Permissions auf Backend-/Manifest-Wahrheit gestellt; Phantome entfernt. MenuItems der Plugins trugen bereits korrekte Permissions (comm:read, mail:config) — nur der statische Router war driftig.

Verifikation (Live-Messung): Neuer Regressionstest frontend/src/__tests__/shell/routePermissions.test.ts 6/6 passed (Source-Inspektion: 5 Korrekturen + Phantom-Freiheits-Nachweis) · tsc --noEmit exit 0 · Production-Build exit 0 vor Commit (Kritikpunkt 21) · frontend-only Deploy FE_EXIT=0.

Live gemessen 2026-08-27 (Kritikpunkte 7+8 Verify-first-Audit, statischer Router `frontend/src/routes/index.tsx` vs. Backend/Manifest): | Route | Vorher (statisch) | Backend-Wahrheit | Manifest | Bewertung | |---|---|---|---|---| | /communication | `communication:read` | `comm:read` (kommunikation/routes.py durchgängig) | `comm:read` | **Phantom-Permission** — communication:read wird nirgends registriert (CORE_PERMISSIONS: nein; kommunikation-Plugin: nur comm:*) → Nicht-Admins mit gültigem comm:read bekamen die Seite nie | | /mail/settings | `mail:read` | `mail:config` (routes.py:234ff Settings-Endpoints) | `mail:config` | Zu schwach — jeder mail-lesende User sah Settings-Seite, deren API ihm 403 lieferte | | /import-export | `contacts:read` | `import_export:read` (app/routes/import_export.py:107) | — | Falsche Permission; **Kritik-Korrekturen:** import_export ist KEIN Plugin (Existenz geprüft: keins) sondern Core-Modul; `import_export:read` ist in CORE_PERMISSIONS registriert (Zeile 59) | | /activity | `activity:read` | — (Seite nutzt Audit-API) | — | **Phantom-Permission** — nirgends registriert; korrekt ist `audit:read` (CORE_PERMISSIONS Zeile 30) | | /wiki | ungeschützt | `wiki:read` (wiki/routes.py:30) | `wiki:read` | Fehlender Schutz im statischen Router | **Fix (f27f047):** Alle 5 statischen Route-Permissions auf Backend-/Manifest-Wahrheit gestellt; Phantome entfernt. MenuItems der Plugins trugen bereits korrekte Permissions (comm:read, mail:config) — nur der statische Router war driftig. **Verifikation (Live-Messung):** Neuer Regressionstest `frontend/src/__tests__/shell/routePermissions.test.ts` **6/6 passed** (Source-Inspektion: 5 Korrekturen + Phantom-Freiheits-Nachweis) · tsc --noEmit exit 0 · **Production-Build exit 0 vor Commit** (Kritikpunkt 21) · frontend-only Deploy FE_EXIT=0.
Leopoldadmin added the bughigh labels 2026-08-27 18:05:48 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leopoldadmin/leocrm#358