<?php
// src/EventSubscriber/LicenseSubscriber.php
namespace App\EventSubscriber;
use App\Service\LicenseChecker;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\KernelEvents;
class LicenseSubscriber implements EventSubscriberInterface
{
private $licenseChecker;
public function __construct(LicenseChecker $licenseChecker)
{
$this->licenseChecker = $licenseChecker;
}
public function onKernelRequest(RequestEvent $event)
{
$request = $event->getRequest();
// Exemple : ignorer la route de vérification elle-même
if ($request->attributes->get('_route') === 'check_license') {
return;
}
$key = $_ENV['LICENSE_KEY'] ?? '';
$result = $this->licenseChecker->checkLicense($key, $request->getHost());
if ($result['status'] !== 'valid') {
$event->setResponse(new JsonResponse(['error' => 'Licence invalide de '.$request->getHost()], 403));
}
}
public static function getSubscribedEvents()
{
return [
KernelEvents::REQUEST => 'onKernelRequest',
];
}
}