<?php
namespace App\Listener;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Security;
use App\Entity\User;
class AuthenticationSuccessListener
{
private $security;
public function __construct(Security $security)
{
$this->security = $security;
}
public function onAuthenticationSuccess(ResponseEvent $event)
{
$request = $event->getRequest();
// Vérifier si le chemin de la requête correspond à /api/auth
if ($request->getPathInfo() !== '/api/auth') {
return;
}
// Récupérer l'utilisateur authentifié
$user = $this->security->getUser();
// Si l'utilisateur est authentifié et est une instance de User
if ($user instanceof User) {
// Décoder le contenu de la réponse (token JWT)
$data = json_decode($event->getResponse()->getContent(), true);
// Ajouter les informations de l'utilisateur à la réponse
$data['user'] = [
'id' => $user->getId(),
'email' => $user->getEmail(),
'nom' => $user->getNom(),
'prenom' => $user->getPrenom(),
'internal_ref' => $user->getInternalRef(),
'roles' => $user->getRoles(),
'parent_id' => $user->getParent() ? $user->getParent()->getId() : null,
'role_app_id' => $user->getRoleApp() ? $user->getRoleApp()->getId() : null,
'point_of_sale_id' => $user->getPointOfSale() ? $user->getPointOfSale()->getId() : null,
'origin_id' => $user->getOriginId(),
'parent_origin_id' => $user->getParentOriginId(),
'picto' => $user->getPicto(),
'cpv' => $user->getPointOfSale() ? $user->getPointOfSale()->getCode() : null,
];
// Modifier le contenu de la réponse avec les informations supplémentaires
$event->getResponse()->setContent(json_encode($data));
}
}
}