guard = $guard; } /** * Show the two factor authentication challenge view. * * @param \Laravel\Fortify\Http\Requests\TwoFactorLoginRequest $request * @return \Laravel\Fortify\Contracts\TwoFactorChallengeViewResponse */ public function create(TwoFactorLoginRequest $request): TwoFactorChallengeViewResponse { if (! $request->hasChallengedUser()) { throw new HttpResponseException(redirect()->route('login')); } return app(TwoFactorChallengeViewResponse::class); } /** * Attempt to authenticate a new session using the two factor authentication code. * * @param \Laravel\Fortify\Http\Requests\TwoFactorLoginRequest $request * @return mixed */ public function store(TwoFactorLoginRequest $request) { $user = $request->challengedUser(); if ($code = $request->validRecoveryCode()) { $user->replaceRecoveryCode($code); event(new RecoveryCodeReplaced($user, $code)); } elseif (! $request->hasValidCode()) { event(new TwoFactorAuthenticationFailed($user)); return app(FailedTwoFactorLoginResponse::class)->toResponse($request); } event(new ValidTwoFactorAuthenticationCodeProvided($user)); $this->guard->login($user, $request->remember()); $request->session()->regenerate(); return app(TwoFactorLoginResponse::class); } }