feat(113): Platform Ops Runbooks — UX Polish (Filament-native, system theme, live scope) #137
@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Http\Middleware;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
|
||||||
|
class UseSystemSessionCookieForLivewireRequests
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||||
|
*/
|
||||||
|
public function handle(Request $request, Closure $next): Response
|
||||||
|
{
|
||||||
|
if (! $this->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';
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -54,10 +54,10 @@ public function panel(Panel $panel): Panel
|
|||||||
'ensure-correct-guard:platform',
|
'ensure-correct-guard:platform',
|
||||||
DisableBladeIconComponents::class,
|
DisableBladeIconComponents::class,
|
||||||
DispatchServingFilamentEvent::class,
|
DispatchServingFilamentEvent::class,
|
||||||
])
|
], isPersistent: true)
|
||||||
->authMiddleware([
|
->authMiddleware([
|
||||||
Authenticate::class,
|
Authenticate::class,
|
||||||
'ensure-platform-capability:'.PlatformCapabilities::ACCESS_SYSTEM_PANEL,
|
'ensure-platform-capability:'.PlatformCapabilities::ACCESS_SYSTEM_PANEL,
|
||||||
]);
|
], isPersistent: true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,10 @@
|
|||||||
health: '/up',
|
health: '/up',
|
||||||
)
|
)
|
||||||
->withMiddleware(function (Middleware $middleware): void {
|
->withMiddleware(function (Middleware $middleware): void {
|
||||||
|
$middleware->web(prepend: [
|
||||||
|
\App\Http\Middleware\UseSystemSessionCookieForLivewireRequests::class,
|
||||||
|
]);
|
||||||
|
|
||||||
$middleware->alias([
|
$middleware->alias([
|
||||||
'ensure-correct-guard' => \App\Http\Middleware\EnsureCorrectGuard::class,
|
'ensure-correct-guard' => \App\Http\Middleware\EnsureCorrectGuard::class,
|
||||||
'ensure-platform-capability' => \App\Http\Middleware\EnsurePlatformCapability::class,
|
'ensure-platform-capability' => \App\Http\Middleware\EnsurePlatformCapability::class,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user