12-05-2026 Frontend dev
This commit is contained in:
parent
405df0a122
commit
5b8bdf4182
779 changed files with 480564 additions and 6241 deletions
56
app/Http/Middleware/SetCurrentPortal.php
Normal file
56
app/Http/Middleware/SetCurrentPortal.php
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Enums\Portal;
|
||||
use App\Services\CurrentPortalContext;
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
/**
|
||||
* Setzt den Portal-Kontext für den aktuellen Request.
|
||||
*
|
||||
* Reihenfolge der Auflösung:
|
||||
* 1. Admin-Session-Override: Ein angemeldeter Admin kann über die Session ein
|
||||
* bestimmtes Portal forcieren (für die Filteransicht im Admin-Bereich).
|
||||
* 2. Domain-Konfiguration: Das aktive Theme (gesetzt vom ThemeServiceProvider)
|
||||
* bestimmt das Portal über den config('app.theme')-Wert.
|
||||
* 3. Kein Kontext: Portal-Scope filtert nicht (z.B. CLI, Tests).
|
||||
*
|
||||
* Theme → Portal-Mapping:
|
||||
* 'presseecho' → Portal::Presseecho
|
||||
* 'businessportal24'→ Portal::Businessportal24
|
||||
* 'main' / andere → null (Admin-Domain; Super-Admin sieht alles)
|
||||
*/
|
||||
class SetCurrentPortal
|
||||
{
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
$portal = $this->resolvePortal($request);
|
||||
CurrentPortalContext::set($portal);
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
private function resolvePortal(Request $request): ?Portal
|
||||
{
|
||||
// Admin-Session-Override hat höchste Priorität
|
||||
if ($request->hasSession() && $request->session()->has('admin_portal_filter')) {
|
||||
$overrideValue = $request->session()->get('admin_portal_filter');
|
||||
$override = Portal::tryFrom((string) $overrideValue);
|
||||
if ($override !== null) {
|
||||
return $override;
|
||||
}
|
||||
}
|
||||
|
||||
// Domain-basierte Auflösung via ThemeServiceProvider
|
||||
$theme = config('app.theme', 'main');
|
||||
|
||||
return match ($theme) {
|
||||
'presseecho' => Portal::Presseecho,
|
||||
'businessportal24' => Portal::Businessportal24,
|
||||
default => null, // Admin/Portal-Domain → kein automatischer Filter
|
||||
};
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue