src/AppBundle/EventSubscriber/RequestSubscriber.php line 41

Open in your IDE?
  1. <?php
  2. namespace AppBundle\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\KernelEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  8. use Lexik\Bundle\JWTAuthenticationBundle\Encoder\JWTEncoderInterface;
  9. use Symfony\Component\HttpFoundation\{Response};
  10. /**
  11.  * Description of ResponseSubscriber
  12.  * 
  13.  * look at https://symfony.com/doc/current/event_dispatcher.html#creating-an-event-subscriber
  14.  *
  15.  * @author SAWIT Mateusz Miklewski <biuro@sawit.pl>
  16.  */
  17. class RequestSubscriber implements EventSubscriberInterface {
  18.     private $entityManager;
  19.     private $tokenStorage;
  20.     private $jwt_encoder;
  21.     public function __construct(EntityManagerInterface $entityManagerTokenStorageInterface $tokenStorageJWTEncoderInterface $jwt_encoder)
  22.     {
  23.         $this->entityManager $entityManager;
  24.         $this->tokenStorage $tokenStorage;
  25.         $this->jwt_encoder $jwt_encoder;
  26.     }
  27.     
  28.     public static function getSubscribedEvents(): array {
  29.         // return the subscribed events, their methods and priorities
  30.         return array(
  31.            KernelEvents::REQUEST => array(
  32.                array('handleOptionsMethod'512)
  33.            )
  34.         );
  35.     }
  36.     
  37.     public function handleOptionsMethod(KernelEvent $event) {
  38.         $request $event->getRequest();
  39.         $method  $request->getMethod();
  40.         if ('OPTIONS' === $method) {
  41.             $response = new Response();
  42.             $response->headers->set('Access-Control-Allow-Origin''*');
  43.             $response->headers->set('Access-Control-Allow-Methods''GET,POST,PUT,DELETE');
  44.             $response->headers->set('Access-Control-Allow-Headers''Accept, Authorization, Content-Type, Token');
  45.             $response->headers->set('Access-Control-Expose-Headers''Token');
  46.             $event->setResponse($responseResponse::HTTP_OK);
  47.             $event->stopPropagation();
  48.             return $response;
  49.         }
  50.         return null;
  51.     }
  52. }