src/EventListener/DebugRequestListener.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Exception;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. class DebugRequestListener implements EventSubscriberInterface
  9. {
  10.     public static function getSubscribedEvents(): array
  11.     {
  12.         return [
  13.             KernelEvents::REQUEST => 'onKernelRequest',
  14.         ];
  15.     }
  16.     /**
  17.      * @param RequestEvent $event
  18.      *
  19.      * @return void
  20.      *
  21.      * @throws Exception
  22.      */
  23.     public function onKernelRequest(RequestEvent $event)
  24.     {
  25.         if (!$event->isMasterRequest() || in_array($this->getIPClient(), RequestListener::MAINTENANCE_IPStrue)) {
  26.             return;
  27.         }
  28.         if ('prod' !== $_ENV['APP_ENV']) {
  29.             return;
  30.         }
  31.         $debug $event->getRequest()->get('debug');
  32.         if (null === $debug) {
  33.             return;
  34.         }
  35.         $response = new Response('Forbidden'Response::HTTP_FORBIDDEN);
  36.         $event->setResponse($response);
  37.     }
  38.     /**
  39.      * Retourne l'IP Public du Client.
  40.      * Le cas d'un proxy devant le serveur web est géré.
  41.      *
  42.      * @return string
  43.      */
  44.     public function getIPClient()
  45.     {
  46.         return $_SERVER['HTTP_CF_CONNECTING_IP']
  47.             ?? $_SERVER['HTTP_CLIENT_IP']
  48.             ?? $_SERVER['HTTP_X_FORWARDED_FOR']
  49.             ?? $_SERVER['REMOTE_ADDR']
  50.             ?? '127.0.0.1'
  51.         ;
  52.     }
  53. }