src/Listener/AuthenticationSuccessListener.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Listener;
  3. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\Security\Core\Security;
  6. use App\Entity\User;
  7. class AuthenticationSuccessListener
  8. {
  9.     private $security;
  10.     public function __construct(Security $security)
  11.     {
  12.         $this->security $security;
  13.     }
  14.     public function onAuthenticationSuccess(ResponseEvent $event)
  15.     {
  16.         $request $event->getRequest();
  17.         // Vérifier si le chemin de la requête correspond à /api/auth
  18.         if ($request->getPathInfo() !== '/api/auth') {
  19.             return;
  20.         }
  21.         // Récupérer l'utilisateur authentifié
  22.         $user $this->security->getUser();
  23.         
  24.         // Si l'utilisateur est authentifié et est une instance de User
  25.         if ($user instanceof User) {
  26.             // Décoder le contenu de la réponse (token JWT)
  27.             $data json_decode($event->getResponse()->getContent(), true);
  28.             // Ajouter les informations de l'utilisateur à la réponse
  29.             $data['user'] = [
  30.                 'id' => $user->getId(),
  31.                 'email' => $user->getEmail(),
  32.                 'nom' => $user->getNom(),
  33.                 'prenom' => $user->getPrenom(),
  34.                 'internal_ref' => $user->getInternalRef(),
  35.                 'roles' => $user->getRoles(),
  36.                 'parent_id' => $user->getParent() ? $user->getParent()->getId() : null,
  37.                 'role_app_id' => $user->getRoleApp() ? $user->getRoleApp()->getId() : null,
  38.                 'point_of_sale_id' => $user->getPointOfSale() ? $user->getPointOfSale()->getId() : null,
  39.                 'origin_id' => $user->getOriginId(),
  40.                 'parent_origin_id' => $user->getParentOriginId(),
  41.                 'picto' => $user->getPicto(),
  42.                 'cpv' => $user->getPointOfSale() ? $user->getPointOfSale()->getCode() : null,
  43.             ];
  44.             // Modifier le contenu de la réponse avec les informations supplémentaires
  45.             $event->getResponse()->setContent(json_encode($data));
  46.         }
  47.     }
  48. }