src/Listener/JWT/JWTCreatedListener.php line 23

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Listener\JWT;
  4. use App\Model\User;
  5. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Symfony\Component\Security\Core\Security;
  8. class JWTCreatedListener
  9. {
  10.     private RequestStack $requestStack;
  11.     private Security $security;
  12.     public function __construct(RequestStack $requestStackSecurity $security)
  13.     {
  14.         $this->requestStack $requestStack;
  15.         $this->security $security;
  16.     }
  17.     public function onJWTCreated(JWTCreatedEvent $event): void
  18.     {
  19.         $payload $event->getData();
  20.         if ($this->requestStack->getCurrentRequest()->get('rememberMe')) {
  21.             $expiration = new \DateTime('+14 day');
  22.             $expiration->setTime(10);
  23.             $payload['exp'] = $expiration->getTimestamp();
  24.         }
  25.         $user $this->security->getUser();
  26.         if ($user instanceof User) {
  27.             $payload['id'] = $user->getId();
  28.             $payload['firstName'] = $user->getFirstName();
  29.             $payload['lastName'] = $user->getLastName();
  30.             $payload['phone'] = $user->getPhone();
  31.         }
  32.         $payload['brand'] = 'LSI Software S.A';
  33.         $event->setData($payload);
  34.     }
  35. }