src/EventSubscriber/LicenciaSubscriber.php line 24

Open in your IDE?
  1. <?php
  2. // src/EventSubscriber/LicenciaSubscriber.php
  3. namespace App\EventSubscriber;
  4. use App\Service\LicenciaService;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpKernel\Event\RequestEvent;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. use Symfony\Component\Routing\RouterInterface;
  10. class LicenciaSubscriber implements EventSubscriberInterface
  11. {
  12.     private $licenciaService;
  13.     private $router;
  14.     public function __construct(LicenciaService $licenciaServiceRouterInterface $router)
  15.     {
  16.         $this->licenciaService $licenciaService;
  17.         $this->router $router;
  18.     }
  19.     public function onKernelRequest(RequestEvent $event)
  20.     {
  21.         $request $event->getRequest();
  22.         $ruta $request->getPathInfo();
  23.         // Rutas que NO requieren licencia
  24.         $rutasPublicas = [
  25.             '/activar-licencia',
  26.             '/obtener-hash-proyecto',
  27.         ];
  28.         // Si es una ruta pública, no verificar licencia
  29.         foreach ($rutasPublicas as $rutaPublica) {
  30.             if (strpos($ruta$rutaPublica) === 0) {
  31.                 return;
  32.             }
  33.         }
  34.         // Verificar licencia para todas las demás rutas
  35.         $estadoLicencia $this->licenciaService->verificarLicencia();
  36.         if (!$estadoLicencia['valido']) {
  37.             // Redirigir a activación de licencia
  38.             $event->setResponse(new RedirectResponse($this->router->generate('activar_licencia')));
  39.         }
  40.     }
  41.     public static function getSubscribedEvents()
  42.     {
  43.         return [
  44.             KernelEvents::REQUEST => ['onKernelRequest'10],
  45.         ];
  46.     }
  47. }