From 1b7e1525945ea4f5811567ec80d4041e507e7e49 Mon Sep 17 00:00:00 2001 From: Ahmed Darrazi Date: Fri, 27 Feb 2026 01:08:40 +0100 Subject: [PATCH] fix: detect system livewire requests via snapshot --- ...SystemSessionCookieForLivewireRequests.php | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php b/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php index 48dc009..4bf2a35 100644 --- a/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php +++ b/app/Http/Middleware/UseSystemSessionCookieForLivewireRequests.php @@ -41,12 +41,61 @@ private function shouldUseSystemCookie(Request $request): bool return false; } + if ($this->snapshotIndicatesSystemPanel($request)) { + return true; + } + $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 snapshotIndicatesSystemPanel(Request $request): bool + { + if (! $request->is('livewire-*/update')) { + return false; + } + + $components = $request->input('components'); + + if (! is_array($components)) { + return false; + } + + foreach ($components as $componentPayload) { + if (! is_array($componentPayload)) { + continue; + } + + $snapshot = $componentPayload['snapshot'] ?? null; + + if (! is_string($snapshot) || $snapshot === '') { + continue; + } + + $decodedSnapshot = json_decode($snapshot, associative: true); + + if (! is_array($decodedSnapshot)) { + continue; + } + + $path = $decodedSnapshot['memo']['path'] ?? null; + + if (! is_string($path) || $path === '') { + continue; + } + + $path = '/'.ltrim($path, '/'); + + if ($path === '/system' || str_starts_with($path, '/system/')) { + return true; + } + } + + return false; + } + private function systemCookieName(): string { return Str::slug((string) config('app.name', 'laravel')).'-system-session';