presseportale/dev
Kevin Adametz 0d0edf1a6c Optimierung 3.6: Zugriffs-Gates und getrennte Impersonation-Sperre
- Gate::define('access-admin'|'access-customer') als Single Source of Truth im
  AppServiceProvider (auch via @can/Policies nutzbar). EnsureUserIsAdmin und
  EnsureUserIsCustomer pruefen jetzt ueber diese Gates.
- Impersonation-Redirect aus EnsureUserIsAdmin in die eigene Middleware
  BlockAdminDuringImpersonation ausgelagert (Sitzungs-Bedingung statt
  Rollenfrage); laeuft vor der Zugriffspruefung und ist zusaetzlich als
  persistente Livewire-Middleware registriert.
- Routen-Alias 'can:' bewusst NICHT verwendet: die Admin-Middleware ist
  persistente Livewire-Middleware und braucht eine konkrete Klasse; der
  parametrisierte Alias kann dort nicht stehen. EnsureApiUserIsActive bleibt
  eigenstaendig (is_active-Pruefung mit getesteter JSON-Antwort, kein Gate).
- Tests: Auth/AccessGatesTest; UserImpersonationTest bleibt gruen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 11:20:28 +00:00
..
_old 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
frontend Frontend: Editorial-Relaunch der öffentlichen Strecke + Ausgaben-Routing 2026-06-16 16:39:28 +00:00
legacy_logging 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
legacy_performance 12-05-2026 Frontend dev 2026-05-12 18:32:33 +02:00
migration 2026 Migration: PM-Datum korrekt übernehmen, UUID stabil, Zwei-Phasen-Runbook 2026-06-17 13:32:48 +00:00
optimize Optimierung 3.6: Zugriffs-Gates und getrennte Impersonation-Sperre 2026-06-19 11:20:28 +00:00