<?php
// src/EventListener/JWTCreatedListener.php
namespace App\EventListener;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\Security\Core\User\UserInterface;
class JWTCreatedListener
{
public function onJWTCreated(JWTCreatedEvent $event)
{
// Get the authenticated user from the event
/** @var UserInterface $user */
$user = $event->getUser();
// Get the current JWT payload (claims)
$payload = $event->getData();
// Add custom data to the payload (e.g., user's email and roles)
$payload['email'] = $user->getEmail(); // Example: add email to payload
$payload['roles'] = $user->getRoles(); // Add user's roles to the payload
// Set the updated payload
$event->setData($payload);
// Optionally, you can modify the JWT header as well
$header = $event->getHeader();
// Example: Add custom data to header (not often needed, but possible)
// $header['alg'] = 'HS256'; // You can modify header algorithm, etc.
$event->setHeader($header);
}
}