src/EventListener/JwtTokenListener.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpKernel\Event\RequestEvent;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Security\Authentication\Token\JWTUserToken;
  5. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  6. use Lexik\Bundle\JWTAuthenticationBundle\TokenExtractor\AuthorizationHeaderTokenExtractor;
  7. class JwtTokenListener
  8. {
  9.     private $tokenStorage;
  10.     public function __construct(TokenStorageInterface $tokenStorage)
  11.     {
  12.         $this->tokenStorage $tokenStorage;
  13.     }
  14.     /**
  15.      * Add JWT token to the token storage
  16.      * If a JWT token is found in the request header, it is added to the token storage
  17.      * use it later if needed (for example in a custom voter)
  18.      * 
  19.      * @param RequestEvent $event
  20.      * @return void
  21.      */
  22.     public function onKernelRequest(RequestEvent $event)
  23.     {
  24.         $extractor = new AuthorizationHeaderTokenExtractor(
  25.             'Bearer',
  26.             'Authorization'
  27.         );
  28.         $token $extractor->extract($event->getRequest());
  29.   
  30.         if ($token) {
  31.             $jwtUserToken = new JWTUserToken();
  32.             $jwtUserToken->setRawToken($token);
  33.             $this->tokenStorage->setToken($jwtUserToken);
  34.         }
  35.     }
  36. }