src/EventSubscriber/XpkSubscriber.php line 28

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: rostandnj
  5.  * Date: 22/7/19
  6.  * Time: 2:22 PM
  7.  */
  8. namespace App\EventSubscriber;
  9. use App\Controller\TokenAuthenticatedController;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  12. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  13. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. class XpkSubscriber implements EventSubscriberInterface
  16. {
  17.     private $xpk;
  18.     public function __construct()
  19.     {
  20.         $this->xpk null;
  21.     }
  22.     public function onKernelController(ControllerEvent $event)
  23.     {
  24.         $controller $event->getController();
  25.         /*
  26.          * $controller passed can be either a class or a Closure.
  27.          * This is not usual in Symfony but it may happen.
  28.          * If it is a class, it comes in array format
  29.          */
  30.         if (!is_array($controller)) {
  31.             return;
  32.         }
  33.         if ($controller[0] instanceof TokenAuthenticatedController ) {
  34.             if($event->getRequest()->getRequestUri() !== '/')
  35.             {
  36.                 $xpk $event->getRequest()->headers->get('X-PK');
  37.                 if ($xpk ==null) {
  38.                     throw new AccessDeniedException('please add X-PK in your request header');
  39.                 }
  40.             }
  41.         }
  42.     }
  43.     public static function getSubscribedEvents()
  44.     {
  45.         return [
  46.             KernelEvents::CONTROLLER => 'onKernelController',
  47.         ];
  48.     }
  49. }