89 lines
2.9 KiB
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,
|
|
]);
|
|
};
|