src/Events/JwtCreatedSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Events;
  3. use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
  4. use App\Entity\User;
  5. use App\Repository\ClientRepository;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class JwtCreatedSubscriber implements EventSubscriberInterface
  8. {
  9.     private ClientRepository $clientRepository;
  10.     public function __construct(ClientRepository $clientRepository)
  11.     {
  12.         $this->clientRepository = $clientRepository;
  13.     }
  14.     public static function getSubscribedEvents()
  15.     {
  16.         return [
  17.             JWTCreatedEvent::class => 'updateJwtData',
  18.         ];
  19.     }
  20.     public function updateJwtData(JWTCreatedEvent $event)
  21.     {
  22.         $user = $event->getUser();
  23.         $data = $event->getData();
  24.         $roles =  $user->getRoles();
  25.         $userrole = $roles[0];
  26.         // Vérifier si l'utilisateur est bien une instance de User
  27.         if (!$user instanceof User) {
  28.             return;
  29.         }
  30.         // Ajouter les infos de l'utilisateur
  31.         $data['id'] = $user->getId();
  32.         $data['email'] = $user->getEmail();
  33.         $data['role']=$userrole;
  34.         //  Récupérer le client depuis le repository
  35.         $client = $this->clientRepository->findOneBy(['user' => $user]);
  36.         if ($client) {
  37.             $data['client'] = [
  38.                 'id' => $client->getId(),
  39.                 'nom' => $client->getNom(),
  40.             ];
  41.         } else {
  42.             $data['client'] = null;
  43.         }
  44.         $event->setData($data);
  45.     }
  46. }