src/App/Api/EventListener/MaintenanceModeApiListener.php line 22

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Api\EventListener;
  4. use App\Api\Enum\ApiErrorCode;
  5. use App\Api\Exception\ApiErrorCodeException;
  6. use App\Api\Repository\SettingRepository;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. class MaintenanceModeApiListener
  10. {
  11.     private $settingRepository;
  12.     public function __construct(SettingRepository $settingRepository)
  13.     {
  14.         $this->settingRepository $settingRepository;
  15.     }
  16.     public function onKernelRequest(RequestEvent $event)
  17.     {
  18.         if (!$event->isMasterRequest()) {
  19.             return;
  20.         }
  21.         $request $event->getRequest();
  22.         if (!$request || str_contains($request->getRequestUri(), 'admin')) {
  23.             return;
  24.         }
  25.         $settings $this->settingRepository->findSettings();
  26.         if (!$settings->getIsMaintenanceMode()) {
  27.             return;
  28.         }
  29.         $apiError ApiErrorCode::SERVICE_UNAVAILABLE()->setTitle(
  30.             'Maintenance mode'
  31.         );
  32.         throw new ApiErrorCodeException($apiErrorResponse::HTTP_SERVICE_UNAVAILABLE);
  33.     }
  34. }