guard = $guard; } /** * Attempt to authenticate a new session using the two factor authentication code. */ public function store(TwoFactorLoginRequest $request): TwoFactorLoginResponse { $user = $request->challengedUser(); $authenticatableUser = $user instanceof Authenticatable ? $user : null; if ($code = $request->validRecoveryCode()) { if ($user !== null && is_object($user) && method_exists($user, 'replaceRecoveryCode')) { $user->replaceRecoveryCode($code); } if ($authenticatableUser instanceof Authenticatable) { event(new RecoveryCodeReplaced($authenticatableUser, $code)); } } elseif (! $request->hasValidCode()) { throw ValidationException::withMessages([ 'code' => __('Invalid Two Factor Authentication code'), ]); } if ($authenticatableUser instanceof Authenticatable) { $this->guard->login($authenticatableUser, $request->remember()); } $request->session()->regenerate(); if ($user !== null && is_object($user) && method_exists($user, 'update')) { $user->update([ 'ip_current' => $request->ip(), ]); } return app(TwoFactorLoginResponse::class); } }