<?php
// src/App/EventListener/JWTDecodedListener.php
namespace App\EventSubscriber;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTDecodedEvent;
use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\HttpFoundation\RequestStack;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\User;
use App\Entity\Customer;
use PhpParser\Builder\Class_;
class JWTCreatedListener{
/**
* @var RequestStack
*/
private $requestStack;
private $entityManager;
/**
* @param RequestStack $requestStack
*/
public function __construct(RequestStack $requestStack,EntityManagerInterface $entityManager)
{
$this->requestStack = $requestStack;
$this->entityManager = $entityManager;
}
/**
* @param JWTCreatedEvent $event
*
* @return void
*/
public function onJWTCreated(JWTCreatedEvent $event)
{
$request = $this->requestStack->getCurrentRequest();
$payload = $event->getData();
$payload['ip'] = $request->getClientIp();
$user = $this->entityManager->getRepository(User::class)->findOneByEmail($payload['email']);
$customer = $this->entityManager->getRepository(Customer::class)->findOneByMail($payload['email']);
$payload['UserID'] = $user->getId();
$payload['fistCustomer'] = $customer->getFistName();
$payload['lastCustomer'] = $customer->getLastName();
$payload['phone'] = $customer->getPhone();
$payload['genre'] = $customer->getGenre();
$payload['ice'] = $customer->getIce();
$payload['NameCompany'] = $customer->getNomEntreprice();
$payload['profession'] = $customer->getProfession();
$payload['dateofbirth'] = $customer->getDateNaissance();
$event->setData($payload);
$header = $event->getHeader();
$header['cty'] = 'JWT';
$event->setHeader($header);
}
}