src/Listeners/RefreshedTokenListener.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Listeners;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\Cookie;
  6. class RefreshedTokenListener implements EventSubscriberInterface {
  7.     private $ttl;
  8.     private $cookieSecure false;
  9.     public function __construct($ttl)
  10.     {
  11.         $this->ttl $ttl;
  12.     }
  13.     public function setRefreshToken(AuthenticationSuccessEvent $event)
  14.     {
  15.         $refreshToken $event->getData()['refresh_token'];
  16.         $response $event->getResponse();
  17.         if ($refreshToken) {
  18.             $response->headers->setCookie(new Cookie('REFRESH_TOKEN'$refreshToken, (
  19.             new \DateTime())
  20.                 ->add(new \DateInterval('PT' $this->ttl 'S')), '/'null$this->cookieSecure));
  21.         }
  22.     }
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             'lexik_jwt_authentication.on_authentication_success' => [
  27.                 ['setRefreshToken']
  28.             ]
  29.         ];
  30.     }
  31. }