public async Task <IActionResult> Disable2Fa(Disable2FaModel model) { var setTwoFactorEnabled = new SetTwoFactorEnabledModel { UserId = UserId, SetEnabled = false }; var disable2FaResult = await _manageEndpoint.SetTwoFactorEnabledAsync(setTwoFactorEnabled); if (!disable2FaResult.Succeeded || HasErrors(disable2FaResult)) { _logger.LogError("Failed to disable 2fa for User with ID '{UserId}'.", UserId); return(View(model)); } _logger.LogInformation("User with ID '{UserId}' has disabled 2fa.", UserId); return(RedirectToAction("TwoFactorAuthentication", "Manage")); }
public async Task <SetTwoFactorEnabledModel> SetTwoFactorEnabled(SetTwoFactorEnabledModel model) { var user = await GetUser(model.UserId, model); if (user == null) { return(LogErrorReturnModel(model)); } var set2FaEnabledResult = await _userManager.SetTwoFactorEnabledAsync(user, model.SetEnabled); if (set2FaEnabledResult.Succeeded) { model.Succeeded = true; return(model); } model.Errors = set2FaEnabledResult.Errors.ToList(); LogErrors(model, "Failed to set two factor authentication"); return(model); }
public async Task <IActionResult> EnableAuthenticator(EnableAuthenticatorModel model) { if (!ModelState.IsValid) { model = await LoadEnableAuthenticatorModel(UserId); HasErrors(model); return(View(model)); } var verifyTwoFactorTokenModel = new VerifyTwoFactorTokenModel { UserId = UserId, VerificationCode = model.Code.Replace(" ", string.Empty).Replace("-", string.Empty) }; verifyTwoFactorTokenModel = await _manageEndpoint.VerifyTwoFactorTokenAsync(verifyTwoFactorTokenModel); if (HasErrors(verifyTwoFactorTokenModel)) { return(View(model)); } if (!verifyTwoFactorTokenModel.IsTokenValid) { ModelState.AddModelError("Code", "Verification code is invalid."); model = await LoadEnableAuthenticatorModel(UserId); HasErrors(model); return(View(model)); } await _signInManager.DoTwoFactorSignInAsync(UserId, false); var setTwoFactorEnabledModel = new SetTwoFactorEnabledModel { UserId = UserId, SetEnabled = true }; var set2FaEnabled = await _manageEndpoint.SetTwoFactorEnabledAsync(setTwoFactorEnabledModel); if (HasErrors(set2FaEnabled)) { _logger.LogError("Failed to enable 2FA with an authenticator app for User with ID '{UserId}'.", set2FaEnabled.UserId); return(View(model)); } _logger.LogInformation("User with ID '{UserId}' has enabled 2FA with an authenticator app.", set2FaEnabled.UserId); model.StatusMessage = "Your authenticator app has been verified."; var recoveryCodeStatus = new RecoveryCodeStatusModel { UserId = UserId }; recoveryCodeStatus = await _manageEndpoint.CheckRecoveryCodesStatus(recoveryCodeStatus); if (HasErrors(model)) { return(View(model)); } if (recoveryCodeStatus.IsUpdated) { var showRecoveryCodesModel = new ShowRecoveryCodesModel() { StatusMessage = model.StatusMessage, RecoveryCodes = recoveryCodeStatus.RecoveryCodes.ToArray() }; return(RedirectToAction("ShowRecoveryCodes", showRecoveryCodesModel)); } return(RedirectToAction("TwoFactorAuthentication")); }
public async Task <SetTwoFactorEnabledModel> SetTwoFactorEnabledAsync(SetTwoFactorEnabledModel model) { return(await _apiHelper.PostAsync(model, "api/Account/Manage/SetTwoFactorEnabled")); }