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; } 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'; } }