You've already forked Epicnabbo-Catalogus-Updated-Daily
69 lines
2.1 KiB
PHP
69 lines
2.1 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()) {
|
|
$response = $next($request);
|
|
assert($response instanceof Response);
|
|
return $response;
|
|
}
|
|
|
|
$isFortify2faRoute = in_array($request->route()?->getName(), $fortify2faRoutes, true);
|
|
if ($maintenanceEnabled && $isFortify2faRoute) {
|
|
$response = $next($request);
|
|
assert($response instanceof Response);
|
|
return $response;
|
|
}
|
|
|
|
$minRank = (int) setting('min_maintenance_login_rank');
|
|
$user = Auth::user();
|
|
if ($user !== null && $user->rank >= $minRank) {
|
|
if ($isMaintenanceRequest) {
|
|
return to_route('me.show');
|
|
}
|
|
|
|
$response = $next($request);
|
|
assert($response instanceof Response);
|
|
return $response;
|
|
}
|
|
|
|
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');
|
|
}
|
|
|
|
$response = $next($request);
|
|
assert($response instanceof Response);
|
|
return $response;
|
|
}
|
|
}
|