<?php
declare(strict_types=1);
namespace App\Listener\JWT;
use App\Model\User;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\Security;
class JWTCreatedListener
{
private RequestStack $requestStack;
private Security $security;
public function __construct(RequestStack $requestStack, Security $security)
{
$this->requestStack = $requestStack;
$this->security = $security;
}
public function onJWTCreated(JWTCreatedEvent $event): void
{
$payload = $event->getData();
if ($this->requestStack->getCurrentRequest()->get('rememberMe')) {
$expiration = new \DateTime('+14 day');
$expiration->setTime(1, 0);
$payload['exp'] = $expiration->getTimestamp();
}
$user = $this->security->getUser();
if ($user instanceof User) {
$payload['id'] = $user->getId();
$payload['firstName'] = $user->getFirstName();
$payload['lastName'] = $user->getLastName();
$payload['phone'] = $user->getPhone();
}
$payload['brand'] = 'LSI Software S.A';
$event->setData($payload);
}
}