ldc-ovoteam/bootstrap/middlewares.php

89 lines
2.9 KiB
PHP

<?php
declare(strict_types=1);
use App\Http\Middlewares\HtmlSanitizer;
use App\Http\Middlewares\SecureHeaders;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets;
use Illuminate\Http\Request;
use Illuminate\Session\Middleware\StartSession;
use Uwil\AdminSecure\Laravel\Http\Middleware\AdminSecureMiddleware;
use Uwil\LaravelBackend\Middlewares\Authenticate;
use Uwil\LaravelBackend\Middlewares\EncryptCookies;
use Uwil\LaravelBackend\Middlewares\LogoutUnpublishedUsers;
use Uwil\LaravelBackend\Middlewares\RedirectIfAuthenticated;
use Uwil\LaravelCommon\Middlewares\DisableSsr;
use Uwil\LaravelCommon\Middlewares\ForceLocale;
use Uwil\LaravelCommon\Middlewares\HandleInertiaRequests;
use Uwil\LaravelCommon\Middlewares\TrimStrings;
use Uwil\LaravelCommon\Middlewares\TrustHosts;
use Uwil\LaravelCommon\Middlewares\TrustProxies;
$redirectGuests = function (Request $request) {
$logins = [
'backend' => route('back.login'),
'frontend' => '/',
];
foreach ($request->route()?->gatherMiddleware() ?? [] as $middleware) {
if (\is_string($middleware) && str_contains($middleware, 'auth:')) {
$route = $logins[str_replace('auth:', '', $middleware)] ?? null;
if ($route) {
return $route;
}
}
}
return $logins['frontend'];
};
$redirectUsers = function (Request $request) {
$logins = [
'backend' => route('back.dashboard.index'),
'frontend' => '/',
];
foreach ($request->route()?->gatherMiddleware() ?? [] as $middleware) {
if (\is_string($middleware) && str_contains($middleware, 'auth:')) {
$route = $logins[str_replace('auth:', '', $middleware)] ?? null;
if ($route) {
return $route;
}
}
}
return $logins['frontend'];
};
return function (Middleware $middleware) use ($redirectGuests, $redirectUsers): void {
$middleware->trustProxies(at: '*');
$middleware->redirectGuestsTo($redirectGuests);
$middleware->redirectUsersTo($redirectUsers);
$middleware->web(append: [
ForceLocale::class,
HandleInertiaRequests::class,
AddLinkHeadersForPreloadedAssets::class,
SecureHeaders::class,
TrimStrings::class,
TrustHosts::class,
TrustProxies::class,
LogoutUnpublishedUsers::class,
]);
$middleware->preventRequestForgery(except: [
'/csp-report',
]);
$middleware->group('saml', [
EncryptCookies::class,
AddQueuedCookiesToResponse::class,
StartSession::class,
]);
$middleware->alias([
'auth' => Authenticate::class,
'guest' => RedirectIfAuthenticated::class,
'htmlsanitize' => HtmlSanitizer::class,
'admin-secure' => AdminSecureMiddleware::class,
'disable-ssr' => DisableSsr::class,
]);
};