<?php
namespace App\EventListener;
use App\Repository\UserRepository;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
class JWTCreatedListener
{
private UserRepository $userRepository;
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function onJWTCreated(JWTCreatedEvent $event)
{
$user = $this->userRepository->findOneBy(['email' => $event->getData()['username']]);
$payload = $event->getData();
$date = new \DateTime();
// date to timestamp
$timestamp = $date->getTimestamp();
$payload['isActive'] = $user->getIsActive();
$payload['name'] = $user->getName();
$payload['surnames'] = $user->getSurnames();
$payload['id'] = $user->getId();
$payload['isSmsExpiration'] = $timestamp >= $user->getSmsExpirationDate() ? true : false;
if (!$user->getIsActive()) {
$payload = [];
}
$event->setData($payload);
}
}