<?php declare(strict_types=1);
namespace App\Authentication\EventListener;
use App\Authentication\Entity\User;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\HttpFoundation\RequestStack;
class JWTCreatedListener
{
private RequestStack $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function onJWTCreated(JWTCreatedEvent $event): void
{
/** @var User $user */
$user = $event->getUser();
$request = $this->requestStack->getCurrentRequest();
$payload = $event->getData();
$payload['isVerified'] = $user->getIsVerified();
$payload['id'] = $user->getId();
$payload['name'] = $user->getName();
$payload['email'] = $user->getEmail();
$payload['username'] = $user->getUserIdentifier();
$event->setData($payload);
$header = $event->getHeader();
$header['cty'] = 'JWT';
$event->setHeader($header);
}
}