src/EventListener/JWTCreatedListener.php line 11

Open in your IDE?
  1. <?php
  2. // src/EventListener/JWTCreatedListener.php
  3. namespace App\EventListener;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  5. use Symfony\Component\Security\Core\User\UserInterface;
  6. class JWTCreatedListener
  7. {
  8.     public function onJWTCreated(JWTCreatedEvent $event)
  9.     {
  10.         
  11.         // Get the authenticated user from the event
  12.         /** @var UserInterface $user */
  13.         $user $event->getUser();
  14.         // Get the current JWT payload (claims)
  15.         $payload $event->getData();
  16.         // Add custom data to the payload (e.g., user's email and roles)
  17.         $payload['email'] = $user->getEmail();  // Example: add email to payload
  18.         $payload['roles'] = $user->getRoles();  // Add user's roles to the payload
  19.         // Set the updated payload
  20.         $event->setData($payload);
  21.         // Optionally, you can modify the JWT header as well
  22.         $header $event->getHeader();
  23.         // Example: Add custom data to header (not often needed, but possible)
  24.         // $header['alg'] = 'HS256'; // You can modify header algorithm, etc.
  25.         $event->setHeader($header);
  26.     }
  27. }