From 98a3e421f9c1da60436f270ca0eb0755c5e1118b Mon Sep 17 00:00:00 2001 From: Ahmed Darrazi Date: Fri, 27 Feb 2026 00:54:57 +0100 Subject: [PATCH] fix: use system session cookie for livewire --- ...SystemSessionCookieForLivewireRequests.php | 54 +++++++++++++++++++ .../Filament/SystemPanelProvider.php | 4 +- bootstrap/app.php | 4 ++ 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php diff --git a/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php b/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php new file mode 100644 index 0000000..48dc009 --- /dev/null +++ b/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php @@ -0,0 +1,54 @@ +shouldUseSystemCookie($request)) { + return $next($request); + } + + $originalCookieName = (string) config('session.cookie'); + + config(['session.cookie' => $this->systemCookieName()]); + + try { + return $next($request); + } finally { + config(['session.cookie' => $originalCookieName]); + } + } + + private function shouldUseSystemCookie(Request $request): bool + { + if ( + ! $request->is('livewire-*/update') + && ! $request->is('livewire-*/upload-file') + && ! $request->is('livewire-*/preview-file/*') + ) { + return false; + } + + $refererPath = parse_url((string) $request->headers->get('referer', ''), PHP_URL_PATH) ?? ''; + $refererPath = '/'.ltrim((string) $refererPath, '/'); + + return $refererPath === '/system' || str_starts_with($refererPath, '/system/'); + } + + private function systemCookieName(): string + { + return Str::slug((string) config('app.name', 'laravel')).'-system-session'; + } +} diff --git a/app/Providers/Filament/SystemPanelProvider.php b/app/Providers/Filament/SystemPanelProvider.php index c68c273..3372cee 100644 --- a/app/Providers/Filament/SystemPanelProvider.php +++ b/app/Providers/Filament/SystemPanelProvider.php @@ -54,10 +54,10 @@ public function panel(Panel $panel): Panel 'ensure-correct-guard:platform', DisableBladeIconComponents::class, DispatchServingFilamentEvent::class, - ]) + ], isPersistent: true) ->authMiddleware([ Authenticate::class, 'ensure-platform-capability:'.PlatformCapabilities::ACCESS_SYSTEM_PANEL, - ]); + ], isPersistent: true); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 25512e2..1919bc3 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -11,6 +11,10 @@ health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { + $middleware->web(prepend: [ + \App\Http\Middleware\UseSystemSessionCookieForLivewireRequests::class, + ]); + $middleware->alias([ 'ensure-correct-guard' => \App\Http\Middleware\EnsureCorrectGuard::class, 'ensure-platform-capability' => \App\Http\Middleware\EnsurePlatformCapability::class,