Example #1
0
        public async Task<IActionResult> LoginWithRecoveryCode(LoginWithRecoveryCodeRequest loginWithRecoveryCode, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return View(new LoginWithRecoveryCodeViewModel(returnUrl));
            }

            Result result = await _loginService.LoginWithRecoveryCode(loginWithRecoveryCode);
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return View(new LoginWithRecoveryCodeViewModel(returnUrl));
            }

            return LocalRedirect(returnUrl);
        }
Example #2
0
        public async Task <Result> LoginWithRecoveryCode(LoginWithRecoveryCodeRequest loginWithRecoveryCode)
        {
            ValidationResult validationResult = _loginWithRecoveryCodeValidator.Validate(loginWithRecoveryCode);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invalid {nameof(LoginWithRecoveryCodeRequest)} model");
                return(Result.Fail(validationResult.Errors));
            }

            SignInResult loginResult = await _signInManager.TwoFactorRecoveryCodeSignInAsync(loginWithRecoveryCode.RecoveryCode);

            if (!loginResult.Succeeded)
            {
                _logger.LogError($"Failed to login with recovery code");
                return(Result.Fail("invalid_recovery_code", "Invalid recovery code"));
            }

            return(Result.Ok());
        }