src/EventListener/AuthenticationSuccessListener.php line 39

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventListener;
  4. use App\Entity\User;
  5. use DateTimeImmutable;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Lexik\Bundle\JWTAuthenticationBundle\Event\AuthenticationSuccessEvent;
  8. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  9. use phpDocumentor\Reflection\Types\This;
  10. use Symfony\Component\Security\Core\Security;
  11. use Symfony\Component\Security\Core\User\UserInterface;
  12. use Symfony\Component\Security\Csrf\TokenGenerator\TokenGeneratorInterface;
  13. use Symfony\Component\Serializer\SerializerInterface;
  14. class AuthenticationSuccessListener
  15. {
  16.     /**
  17.      * @var SerializerInterface
  18.      */
  19.     private $serializer;
  20.     /**
  21.      * AuthenticationSuccessListener constructor.
  22.      * @param SerializerInterface $serializer
  23.      */
  24.     public function __construct(SerializerInterface $serializer)
  25.     {
  26.         $this->serializer $serializer;
  27.     }
  28.     /**
  29.      * @param AuthenticationSuccessEvent $event
  30.      * @return void
  31.      */
  32.     public function onAuthenticationSuccessResponse(AuthenticationSuccessEvent $event)
  33.     {
  34.         $data $event->getData();
  35.         $user $event->getUser();
  36.         if (!$user instanceof User) {
  37.             return;
  38.         }
  39.         $user $this->serializer->serialize($user'json', ['groups' => 'user:read']);
  40.         $event->setData([
  41.             'status'    => $event->getResponse()->getStatusCode(),
  42.             'message'   => 'User authenticated succesfully.',
  43.             'token'     => $data['token'],
  44.             'user'      => json_decode($user)
  45.         ]);
  46.     }
  47. }