src/EventSubscriber/ApiAccessSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by simpson <simpsonwork@gmail.com>
  4.  * Date: 2019-07-02
  5.  * Time: 18:22
  6.  */
  7. namespace App\EventSubscriber;
  8. use App\Service\AccessManager;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  12. use Symfony\Component\HttpKernel\Event\RequestEvent;
  13. use Symfony\Component\HttpKernel\KernelEvents;
  14. class ApiAccessSubscriber implements EventSubscriberInterface
  15. {
  16.     public function __construct(
  17.         private AccessManager $accessManager
  18.     ) {}
  19.     protected static $routesToCheck = [
  20.         'api.voucher.check_code'
  21.     ];
  22.     public function onRequest(RequestEvent $event): void
  23.     {
  24.         $request $event->getRequest();
  25.         $ip $request->getClientIp();
  26.         $route $request->get('_route');
  27.         if(in_array($routeself::$routesToCheck)) {
  28.             if (false == $this->accessManager->checkIpAccessToAPIVouchers($ip))
  29.                 $event->setResponse(new Response('Forbidden'Response::HTTP_FORBIDDEN));
  30.         }
  31.     }
  32.     /**
  33.      * @inheritDoc
  34.      */
  35.     public static function getSubscribedEvents()
  36.     {
  37.         return [
  38.             KernelEvents::REQUEST => ['onRequest'],
  39.         ];
  40.     }
  41. }