src/EventSubscriber/KernelRequestSubscriber.php line 39
<?phpdeclare(strict_types=1);namespace App\EventSubscriber;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Event\RequestEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use Twig\Environment as TwigEnvironment;class KernelRequestSubscriber implements EventSubscriberInterface{private TwigEnvironment $twig;private TokenStorageInterface $tokenStorage; // <-- Changez cecipublic function __construct(TwigEnvironment $twig,TokenStorageInterface $tokenStorage // <-- Et ceci){$this->twig = $twig;$this->tokenStorage = $tokenStorage;}/*** {@inheritdoc}*/public static function getSubscribedEvents(): array{return [KernelEvents::REQUEST => [['onMaintenance', \PHP_INT_MAX - 1000],],];}public function onMaintenance(RequestEvent $event): void{// Vérifier si on est sur une route admin$request = $event->getRequest();$pathInfo = $request->getPathInfo();if (str_starts_with($pathInfo, '/admin')) {return;}/** @var bool $isMaintenance */$isMaintenance = \filter_var($_ENV['MAINTENANCE_MODE'] ?? '0', \FILTER_VALIDATE_BOOLEAN);$whitelistedIps = ['127.0.0.1','86.207.232.56', '88.124.138.142', '45.145.167.57', '37.122.207.67'];if (!empty($_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];} else {$ip = $_SERVER['REMOTE_ADDR'];}if(!in_array($ip,$whitelistedIps)) {if ($isMaintenance) {$event->setResponse(new Response($this->twig->render('maintenance.html.twig'),Response::HTTP_SERVICE_UNAVAILABLE,));$event->stopPropagation();}}}}