Files
Epicnabbo-Catalogus-Updated…/Updated_Cms/app/Http/Middleware/MaintenanceMiddleware.php
T
Remco e561acb897 🆙 More fixes🆙
2026-01-19 22:14:07 +01:00

61 lines
1.8 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class MaintenanceMiddleware
{
public function handle(Request $request, Closure $next): Response
{
$isPostRequest = $request->method() === 'POST';
$isMaintenanceRequest = $request->is('maintenance');
$maintenanceEnabled = setting('maintenance_enabled') === '1';
$fortify2faRoutes = [
'two-factor.login',
'two-factor.confirm',
];
if ($maintenanceEnabled && $isPostRequest && ! Auth::check()) {
return $next($request);
}
$isFortify2faRoute = in_array($request->route()?->getName(), $fortify2faRoutes, true);
if ($maintenanceEnabled && $isFortify2faRoute) {
return $next($request);
}
$minRank = (int) setting('min_maintenance_login_rank');
$user = Auth::user();
if ($user !== null && $user->rank >= $minRank) {
if ($isMaintenanceRequest) {
return to_route('me.show');
}
return $next($request);
}
if ($user !== null && $user->rank >= $minRank && $isMaintenanceRequest) {
return to_route('me.show');
}
if ($maintenanceEnabled && ! $isMaintenanceRequest && ! $isPostRequest) {
return to_route('maintenance.show');
}
if (! $maintenanceEnabled && $isMaintenanceRequest && ! $isPostRequest) {
return to_route('welcome');
}
if ($maintenanceEnabled && ! $isMaintenanceRequest && $user !== null && $user->rank < $minRank) {
return to_route('maintenance.show');
}
return $next($request);
}
}