/** * This is called when an interactive authentication attempt succeeds. This * is called by authentication listeners inheriting from * AbstractAuthenticationListener. * * @param Request $request * @param TokenInterface $token * * @return Response never null */ public function onAuthenticationSuccess(Request $request, TokenInterface $token) { // Step 1. Invoke success handler $response = $this->wrappedSuccessHandler->onAuthenticationSuccess($request, $token); // Step 2. Dispatch success event if any if ($this->eventDispatcher != null && $this->successEventName != null) { $this->eventDispatcher->dispatch($this->successEventName, new LoginEventLog()); } return $response; }
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); }