entityManager = $entityManager; $this->urlGenerator = $urlGenerator; } public function supports(Request $request): ?bool { return $request->getPathInfo() === '/login' && $request->isMethod('POST'); } public function authenticate(Request $request): Passport { $identifier = $request->request->get('username'); $password = $request->request->get('password'); // Chercher l'utilisateur par email ou pseudo $user = $this->entityManager->getRepository(Participant::class)->findOneBy([ 'email' => $identifier ]) ?? $this->entityManager->getRepository(Participant::class)->findOneBy([ 'pseudo' => $identifier ]); if (!$user) { throw new AuthenticationException('Identifiant ou mot de passe incorrect.'); } // Utilisation de UserBadge au lieu de Participant directement return new Passport( new UserBadge($user->getEmail()), // Utilisation de l'email ou du pseudo pour l'identification new PasswordCredentials($password) // Ajout du mot de passe pour la vérification ); } public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?RedirectResponse { return new RedirectResponse($this->urlGenerator->generate('home')); } public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?RedirectResponse { return new RedirectResponse($this->urlGenerator->generate('app_login')); } }