src/EventSubscriber/XClientIdEventSubscribe.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Controller\TokenAuthenticatedController;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. class XClientIdEventSubscribe implements EventSubscriberInterface
  11. {
  12.     private $logger;
  13.     public function __construct(LoggerInterface $logger)
  14.     {
  15.         $this->logger $logger;
  16.     }
  17.     public function onKernelRequest(RequestEvent $event)
  18.     {
  19.         $request $event->getRequest();
  20.         $method strtoupper($request->getMethod());
  21.         if(in_array($method, array("GET""HEAD""OPTIONS""TRACE""CONNECT"))) {
  22.             return;
  23.         }
  24.         if('/login' == $request->getPathInfo() && 'POST' == $request->getMethod()) {
  25.             return;
  26.         }
  27.         $clientId $request->headers->get('x-clientid');
  28.         if(empty($clientId)) {
  29.             $this->logger->warning('X-ClientId not defined: '.$request->getMethod().' '.$request->getPathInfo());
  30.             throw new AccessDeniedHttpException('Modification forbidden (x-cli...)');
  31.         }
  32.     }
  33.     public static function getSubscribedEvents()
  34.     {
  35.         return [
  36.             KernelEvents::REQUEST => 'onKernelRequest'
  37.         ];
  38.     }
  39. }