src/EventListener/AuthenticationSuccessListener.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Encoder\JWTEncoderInterface;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  5. use Lexik\Bundle\JWTAuthenticationBundle\Exception\JWTDecodeFailureException;
  6. use Symfony\Component\Security\Core\User\UserInterface;
  7. class AuthenticationSuccessListener
  8. {
  9.     /**
  10.      * @var JWTEncoderInterface
  11.      */
  12.     private $JWTEncoder;
  13.     public function __construct(JWTEncoderInterface $JWTEncoder)
  14.     {
  15.         $this->JWTEncoder $JWTEncoder;
  16.     }
  17.     public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
  18.     {
  19.         $data $event->getData();
  20.         $user $event->getUser();
  21.         if(!$user instanceof UserInterface) {
  22.             return;
  23.         }
  24.         $exp null;
  25.         try {
  26.             $exp $this->JWTEncoder->decode($event->getData()['token']);
  27.         } catch (JWTDecodeFailureException $e) {
  28.         }
  29.         $data['data'] = array(
  30.             'roles'     => $user->getRoles(),
  31.             'userId'    => $user->getId(),
  32.             'exp'       => $exp['exp'],
  33.             'fullName'  => $user->getFullName(),
  34.             'email'     => $user->getUsername()
  35.         );
  36.         $event->setData($data);
  37.     }
  38. }