src/Flexy/ShopBundle/EventSubscriber/JWTCreatedListener.php line 28

  1. <?php 
  2. // src/App/EventListener/JWTDecodedListener.php
  3. namespace App\Flexy\ShopBundle\EventSubscriber;
  4. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTDecodedEvent;
  5. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use App\Entity\User;
  9. use App\Flexy\ShopBundle\Entity\Customer\Customer;
  10. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  11. use Symfony\Component\Serializer\Encoder\XmlEncoder;
  12. use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
  13. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  14. use Symfony\Component\Serializer\Serializer;
  15. class JWTCreatedListener{
  16.             
  17.             public function __construct(private readonly RequestStack $requestStack, private readonly EntityManagerInterface $entityManager)
  18.         {
  19.         }
  20.         
  21.         
  22.         /**
  23.          * @return void
  24.          */
  25.         public function onJWTCreated(JWTCreatedEvent $event)
  26.         {
  27.             $encoders = [new XmlEncoder(), new JsonEncoder()];
  28.             $normalizers = [new ObjectNormalizer()];
  29.             $serializer = new Serializer($normalizers$encoders);
  30.             $request $this->requestStack->getCurrentRequest();
  31.          
  32.             $payload       $event->getData();
  33.             
  34.             $payload['ip'] = $request->getClientIp();
  35.             $user $this->entityManager->getRepository(User::class)->findOneBy(["username"=>$payload['username']]);
  36.             $customer $this->entityManager->getRepository(Customer::class)->findOneBy(["user"=>$user]);
  37.             $customerPayload = [];
  38.             if($customer){
  39.                 $customerPayload =[
  40.                     "id"=>$customer->getId(),
  41.                     "firstName"=>$customer->getFirstName(),
  42.                     "lastName"=>$customer->getLastName(),
  43.                     "email"=>$customer->getEmail(),
  44.                     "address"=>$customer->getAddress(),
  45.                     "phone"=>$customer->getPhone(),
  46.                     
  47.                 ];
  48.             }
  49.             
  50.             $payload["customer"]=  $customerPayload ;
  51.             
  52.             $event->setData($payload);
  53.             $header $event->getHeader();
  54.         
  55.             $event->setHeader($header);
  56.         }
  57.             
  58.          
  59. }