src/Listener/MaintenanceListener.php line 45

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