src/EventListener/RequestListener.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpFoundation\JsonResponse;
  4. use Symfony\Component\HttpKernel\Event\RequestEvent;
  5. class RequestListener
  6. {
  7.     /**
  8.      * @var string
  9.      */
  10.     private $apiKey;
  11.     public function __construct(string $apiKey)
  12.     {
  13.         $this->apiKey $apiKey;
  14.     }
  15.     public function onKernelRequest(RequestEvent $event)
  16.     {
  17.         if (!$event->isMasterRequest()) {
  18.             return;
  19.         }
  20.         $uri $event->getRequest()->server->get('REQUEST_URI');
  21.         if (strpos($uri"api/v1") === false || $uri === '/api/v1') {
  22.             return;
  23.         }
  24.         if ($event->getRequest()->headers->has('x-api-key') === false) {
  25.             $event->setResponse(new JsonResponse(['message' => 'API key is missing in header'], 401));
  26.             return;
  27.         }
  28.         if ($event->getRequest()->headers->get('x-api-key') !== $this->apiKey) {
  29.             $event->setResponse(new JsonResponse(['message' => 'Incorrect API key provided'], 401));
  30.             return;
  31.         }
  32.     }
  33. }