103 lines
3.3 KiB
PHP
103 lines
3.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Http\Middleware\CustomerIsEmployed;
|
|
use App\Http\Middleware\EnsureCustomerEmailIsVerified;
|
|
use App\Http\Middleware\HtmlSanitizer;
|
|
use App\Http\Middleware\SecureHeaders;
|
|
use App\Http\Middleware\UserHasRole;
|
|
use App\Providers\RouteServiceProvider;
|
|
use App\Services\FlashMessageService;
|
|
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
|
|
use Illuminate\Cookie\Middleware\EncryptCookies;
|
|
use Illuminate\Foundation\Configuration\Middleware;
|
|
use Illuminate\Foundation\Http\Middleware\PreventRequestForgery;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Middleware\SubstituteBindings;
|
|
use Illuminate\Session\Middleware\AuthenticateSession;
|
|
use Illuminate\Session\Middleware\StartSession;
|
|
use Illuminate\View\Middleware\ShareErrorsFromSession;
|
|
|
|
$redirectGuests = function (Request $request) {
|
|
$logins = [
|
|
'backend' => route('bo.auth.login'),
|
|
'frontend' => route('fo.auth.connexion'),
|
|
];
|
|
|
|
app(FlashMessageService::class)->warning(__('Please log in to continue.'));
|
|
|
|
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('bo.dashboard'),
|
|
'frontend' => route('fo.pages.home'),
|
|
];
|
|
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->alias([
|
|
'has-role' => UserHasRole::class,
|
|
'is-employed' => CustomerIsEmployed::class,
|
|
'verified' => EnsureCustomerEmailIsVerified::class,
|
|
'htmlsanitize' => HtmlSanitizer::class,
|
|
]);
|
|
|
|
$middleware->group(
|
|
RouteServiceProvider::ROUTE_GROUP_API,
|
|
[
|
|
SubstituteBindings::class,
|
|
]
|
|
);
|
|
$middleware->group(
|
|
RouteServiceProvider::ROUTE_GROUP_WEB_AJAX,
|
|
[
|
|
EncryptCookies::class,
|
|
AddQueuedCookiesToResponse::class,
|
|
StartSession::class,
|
|
AuthenticateSession::class,
|
|
PreventRequestForgery::class,
|
|
SubstituteBindings::class,
|
|
SecureHeaders::class,
|
|
]
|
|
);
|
|
$middleware->group(
|
|
RouteServiceProvider::ROUTE_GROUP_WEB,
|
|
[
|
|
HtmlSanitizer::class,
|
|
EncryptCookies::class,
|
|
AddQueuedCookiesToResponse::class,
|
|
StartSession::class,
|
|
AuthenticateSession::class,
|
|
ShareErrorsFromSession::class,
|
|
PreventRequestForgery::class,
|
|
SubstituteBindings::class,
|
|
SecureHeaders::class,
|
|
]
|
|
);
|
|
};
|