src/Listener/MaintenanceListener.php line 43

Open in your IDE?
  1. <?php
  2.     namespace App\Listener;
  3.     use App\Services\Common\PlatformService;
  4.     use Exception;
  5.     use Symfony\Component\HttpFoundation\Response;
  6.     use Symfony\Component\HttpKernel\Event\ControllerEvent;
  7.     use Twig\Environment;
  8.     use Twig\Error\LoaderError;
  9.     use Twig\Error\RuntimeError;
  10.     use Twig\Error\SyntaxError;
  11.     class MaintenanceListener
  12.     {
  13.         private Environment     $twig;
  14.         private PlatformService $platformService;
  15.         public function __construct(
  16.                 Environment     $twig,
  17.                 PlatformService $platformService
  18.         )
  19.         {
  20.             $this->twig            $twig;
  21.             $this->platformService $platformService;
  22.         }
  23.         /**
  24.          * @param ControllerEvent $event
  25.          *
  26.          * @return void
  27.          *
  28.          * @throws LoaderError
  29.          * @throws RuntimeError
  30.          * @throws SyntaxError
  31.          * @throws Exception
  32.          */
  33.         public function onKernelControllerControllerEvent $event )
  34.         {
  35.             $request $event->getRequest();
  36.             if ( in_array(
  37.                     $request->get'_route' ),
  38.                     [
  39.                             'static_file_folder',
  40.                             'static_project_file',
  41.                             'front_common_css_custom',
  42.                             'global_common_platform_version',
  43.                     ]
  44.             ) ) {
  45.                 return;
  46.             }
  47.             $maintenance $this->platformService->maintenanceMode();
  48.             if ( !isset( $maintenance'enabled' ] ) || !$maintenance'enabled' ] ) {
  49.                 return;
  50.             }
  51.             $ips str_replace( [ '['']' ], ''$maintenance'ips' ] );
  52.             $ips explode','$ips );
  53.             if ( in_array$request->getClientIp(), $ips ) ) {
  54.                 return;
  55.             }
  56.             $message $this->twig->render'common/maintenance/default.html.twig', [
  57.                     'maintenance' => $maintenance,
  58.                     'project' => $this->platformService->getDomain(),
  59.             ] );
  60.             $event->setController(
  61.                     function () use ( $message ) {
  62.                         return new Response$message200 );
  63.                     }
  64.             );
  65.         }
  66.     }