hasSession()) { return false; } return $request->getSession()->has('profileId'); } public function authenticate(Request $request): Passport { $profileId = $request->getSession()->get('profileId'); return new SelfValidatingPassport( new UserBadge($profileId, function (string $id): Profile { $profile = $this->profiles->find($id); if (!$profile || !$profile->isActive()) { throw new CustomUserMessageAuthenticationException('Profil introuvable ou inactif.'); } return $profile; }) ); } public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response { // Let the request continue normally return null; } public function onAuthenticationFailure(Request $request, AuthenticationException $exception): ?Response { return new JsonResponse( ['message' => $exception->getMessageKey()], JsonResponse::HTTP_UNAUTHORIZED, ); } }