<?php
namespace App\EventListener;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
class RequestListener
{
/**
* @var string
*/
private $apiKey;
public function __construct(string $apiKey)
{
$this->apiKey = $apiKey;
}
public function onKernelRequest(RequestEvent $event)
{
if (!$event->isMasterRequest()) {
return;
}
$uri = $event->getRequest()->server->get('REQUEST_URI');
if (strpos($uri, "api/v1") === false || $uri === '/api/v1') {
return;
}
if ($event->getRequest()->headers->has('x-api-key') === false) {
$event->setResponse(new JsonResponse(['message' => 'API key is missing in header'], 401));
return;
}
if ($event->getRequest()->headers->get('x-api-key') !== $this->apiKey) {
$event->setResponse(new JsonResponse(['message' => 'Incorrect API key provided'], 401));
return;
}
}
}