src/EventSubscriber/LicenseSubscriber.php line 21

Open in your IDE?
  1. <?php
  2. // src/EventSubscriber/LicenseSubscriber.php
  3. namespace App\EventSubscriber;
  4. use App\Service\LicenseChecker;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpKernel\KernelEvents;
  9. class LicenseSubscriber implements EventSubscriberInterface
  10. {
  11.     private $licenseChecker;
  12.     public function __construct(LicenseChecker $licenseChecker)
  13.     {
  14.         $this->licenseChecker $licenseChecker;
  15.     }
  16.     public function onKernelRequest(RequestEvent $event)
  17.     {
  18.         $request $event->getRequest();
  19.         // Exemple : ignorer la route de vérification elle-même
  20.         if ($request->attributes->get('_route') === 'check_license') {
  21.             return;
  22.         }
  23.         $key $_ENV['LICENSE_KEY'] ?? '';
  24.         $result $this->licenseChecker->checkLicense($key$request->getHost());
  25.         if ($result['status'] !== 'valid') {
  26.             $event->setResponse(new JsonResponse(['error' => 'Licence invalide de '.$request->getHost()], 403));
  27.         }
  28.     }
  29.     public static function getSubscribedEvents()
  30.     {
  31.         return [
  32.             KernelEvents::REQUEST => 'onKernelRequest',
  33.         ];
  34.     }
  35. }