public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { $targetPath = $this->failureDefault; $this->logger->debug('Authentication failure handled by ' . __CLASS__, [$exception, $exception->getPrevious(), $exception->getToken()]); if ($exception instanceof BadCredentialsException && $exception->getPrevious() instanceof UsernameNotFoundException && $exception->getToken() instanceof Token && $exception->getToken()->getRoles()[0]->getRole() == ThirdPartyAuthentication::IDENTIFIED) { $this->logger->info('Go to register'); $targetPath = 'guest_register'; $request->getSession()->set(self::IDENTIFIED_TOKEN, $exception->getToken()); } else { $request->getSession()->set(SecurityContextInterface::AUTHENTICATION_ERROR, $exception); } return $this->httpUtils->createRedirectResponse($request, $targetPath); }
public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { $targetPath = $this->failureDefault; $token = $exception->getToken(); $this->logger->debug('Authentication failure handled by ' . __CLASS__, [$exception, $exception->getPrevious(), $token]); if ($exception instanceof BadCredentialsException && $exception->getPrevious() instanceof UsernameNotFoundException && $token instanceof Token && $token->getRoles()[0]->getRole() == ThirdPartyAuthentication::IDENTIFIED) { $this->logger->info('Autoregister'); // create new user, persist and authenticate $user = $this->repository->create($token->getUserUniqueIdentifier(), $token->getProviderKey(), $token->getAttribute('nickname')); $newToken = new Token($token->getFirewallName(), $token->getProviderKey(), $token->getUserUniqueIdentifier(), $user->getRoles()); $this->repository->persist($user); $newToken->setUser($user); $this->security->setToken($newToken); return $this->successLoginHandler->onAuthenticationSuccess($request, $newToken); } $request->getSession()->set(SecurityContextInterface::AUTHENTICATION_ERROR, $exception); return $this->httpUtils->createRedirectResponse($request, $targetPath); }
/** * {@inheritdoc} */ public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { $data = ['reason' => 'Credentials refused!', 'username' => !$exception->getToken() ? 'unknown' : $exception->getToken()->getUsername()]; return new JsonResponse($data, JsonResponse::HTTP_UNAUTHORIZED); }