vendor/artgris/maintenance-bundle/Artgris/MaintenanceBundle/EventListener/MaintenanceListener.php line 57

Open in your IDE?
  1. <?php
  2. namespace Artgris\MaintenanceBundle\EventListener;
  3. use Symfony\Component\HttpFoundation\IpUtils;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpKernel\Event\RequestEvent;
  6. use Symfony\Component\HttpKernel\KernelInterface;
  7. use Twig\Environment;
  8. /**
  9.  * Maintenance Listener
  10.  *
  11.  * @author Arthur Gribet <a.gribet@gmail.com>
  12.  */
  13. class MaintenanceListener
  14. {
  15.     /**
  16.      * @var bool
  17.      */
  18.     private $enable;
  19.     /**
  20.      * @var array
  21.      */
  22.     private $ips;
  23.     /**
  24.      * @var KernelInterface
  25.      */
  26.     private $kernel;
  27.     /**
  28.      * @var Environment
  29.      */
  30.     private $twig_Environment;
  31.     /**
  32.      * @var mixed
  33.      */
  34.     private $response;
  35.     /**
  36.      * MaintenanceListener constructor.
  37.      *
  38.      * @param array $maintenance
  39.      * @param KernelInterface $kernel
  40.      * @param Environment $twig_Environment
  41.      */
  42.     public function __construct(array $maintenanceKernelInterface $kernelEnvironment $twig_Environment)
  43.     {
  44.         $this->enable $maintenance['enable'] ?: false;
  45.         $this->ips $maintenance['ips'] ?: [];
  46.         $this->response $maintenance['response'];
  47.         $this->kernel $kernel;
  48.         $this->twig_Environment $twig_Environment;
  49.     }
  50.     public function onKernelRequest(RequestEvent $event)
  51.     {
  52.         if (!$event->isMainRequest()) {
  53.             return;
  54.         }
  55.         $request $event->getRequest();
  56.         if ($this->enable && $this->kernel->getEnvironment() != 'dev' && !IpUtils::checkIp($request->getClientIp(), $this->ips)) {
  57.             $content $this->twig_Environment->render('@ArtgrisMaintenance/maintenance.html.twig');
  58.             $event->setResponse(new Response($content$this->response));
  59.         }
  60.     }
  61. }