public virtual void ConfigureTwoFactorAuthentication(Guid accountID, TwoFactorAuthMode mode) { Tracing.Information("[UserAccountService.ConfigureTwoFactorAuthentication] called: {0}", accountID); var account = this.GetByID(accountID); if (account == null) { throw new ArgumentException("Invalid AccountID"); } account.ConfigureTwoFactorAuthentication(mode); Update(account); }
public async Task ConfigureTwoFactorAuthenticationAsync(int accountId, TwoFactorAuthMode mode) { _logger.LogInformation(GetLogMessage($"called: {accountId}")); var account = await GetByIdAsync(accountId, x => x.TwoFactorAuthTokenCollection); if (account == null) { throw new ArgumentException("Invalid Account Id"); } ConfigureTwoFactorAuthentication(account, mode); Update(account); _logger.LogInformation(GetLogMessage("Success")); }
protected virtual void ConfigureTwoFactorAuthentication(UserAccount account, TwoFactorAuthMode mode) { if (account == null) { throw new ArgumentNullException(nameof(account)); } _logger.LogInformation(GetLogMessage($"called for accountID: {account.UserId}, mode: {mode}")); if (account.AccountTwoFactorAuthMode == mode) { _logger.LogWarning(GetLogMessage("Nothing to do -- mode is same as current value")); return; } if (mode == TwoFactorAuthMode.Mobile && string.IsNullOrWhiteSpace(account.MobilePhoneNumber)) { var error = GetValidationMessage(UserAccountConstants.ValidationMessages.RegisterMobileForTwoFactor); _logger.LogError(GetLogMessage(error)); throw new ValidationException(error); } ClearMobileAuthCode(account); account.AccountTwoFactorAuthMode = mode; account.CurrentTwoFactorAuthStatus = TwoFactorAuthMode.None; if (mode == TwoFactorAuthMode.None) { RemoveTwoFactorAuthTokens(account); _logger.LogTrace(GetLogMessage("success -- two factor auth disabled")); AddEvent(new TwoFactorAuthenticationDisabledEvent { Account = account }); } else { _logger.LogTrace(GetLogMessage($"success -- two factor auth enabled, mode: {mode}")); AddEvent(new TwoFactorAuthenticationEnabledEvent { Account = account, Mode = mode }); } }
public ActionResult Index(TwoFactorAuthMode mode) { try { this.userAccountService.ConfigureTwoFactorAuthentication(this.User.GetUserID(), mode); ViewData["Message"] = "Update Success"; var acct = userAccountService.GetByID(this.User.GetUserID()); return(View("Index", acct)); } catch (ValidationException ex) { ModelState.AddModelError("", ex.Message); } return(View("Index", userAccountService.GetByID(this.User.GetUserID()))); }
public ActionResult Index(TwoFactorAuthMode mode) { try { this.userAccountService.ConfigureTwoFactorAuthentication(this.User.GetUserID(), mode); ViewData["Message"] = "Update Success"; var acct = userAccountService.GetByID(this.User.GetUserID()); return View("Index", acct); } catch (ValidationException ex) { ModelState.AddModelError("", ex.Message); } return View("Index", userAccountService.GetByID(this.User.GetUserID())); }
protected internal virtual void ConfigureTwoFactorAuthentication(TwoFactorAuthMode mode) { Tracing.Information("[UserAccount.ConfigureTwoFactorAuthentication] called for accountID: {0}, mode: {1}", this.ID, mode); if (this.AccountTwoFactorAuthMode == mode) { Tracing.Warning("[UserAccount.ConfigureTwoFactorAuthentication] nothing to do -- mode is same as current value"); return; } if (mode == TwoFactorAuthMode.Mobile && String.IsNullOrWhiteSpace(this.MobilePhoneNumber)) { Tracing.Error("[UserAccount.ConfigureTwoFactorAuthentication] failed -- mobile requested but no mobile phone for account"); throw new ValidationException("Register a mobile phone number to enable mobile two factor authentication."); } if (mode == TwoFactorAuthMode.Certificate && !this.Certificates.Any()) { Tracing.Error("[UserAccount.ConfigureTwoFactorAuthentication] failed -- certificate requested but no certificates for account"); throw new ValidationException("Add a client certificate to enable certificate two factor authentication."); } this.ClearMobileAuthCode(); this.AccountTwoFactorAuthMode = mode; if (mode == TwoFactorAuthMode.None) { Tracing.Verbose("[UserAccount.ConfigureTwoFactorAuthentication] success -- two factor auth disabled"); this.AddEvent(new TwoFactorAuthenticationDisabledEvent { Account = this }); } else { Tracing.Verbose("[UserAccount.ConfigureTwoFactorAuthentication] success -- two factor auth enabled, mode: {0}", mode); this.AddEvent(new TwoFactorAuthenticationEnabledEvent { Account = this, Mode = mode }); } }
public virtual void ConfigureTwoFactorAuthentication(Guid accountID, TwoFactorAuthMode mode) { Tracing.Information("[UserAccountService.ConfigureTwoFactorAuthentication] called: {0}", accountID); var account = this.GetByID(accountID); if (account == null) throw new ArgumentException("Invalid AccountID"); account.ConfigureTwoFactorAuthentication(mode); Update(account); }
public async Task <IActionResult> ConfigureMultiFactorAuthAsync(TwoFactorAuthMode mode) { await _userAccountService.ConfigureTwoFactorAuthenticationAsync(UserInfo.UserId, mode); return(Ok()); }