public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = "") { if (model.TenancyName != null) { var isTenantAvailable = await _accountAppService.IsTenantAvailable(new IsTenantAvailableInput { TenancyName = model.TenancyName }); switch (isTenantAvailable.State) { case TenantAvailabilityState.InActive: throw new UserFriendlyException(L("TenantIsNotActive", model.TenancyName)); case TenantAvailabilityState.NotFound: throw new UserFriendlyException(L("ThereIsNoTenantDefinedWithName{0}", model.TenancyName)); } } var loginResult = await GetLoginResultAsync(model.UsernameOrEmailAddress, model.Password, model.TenancyName); if (loginResult.User.NeedToChangeThePassword) { throw new UserFriendlyException(L("RequiresPasswordChange")); } var signInResult = await _signInManager.SignInOrTwoFactorAsync(loginResult, model.RememberMe); if (signInResult.RequiresTwoFactor) { throw new UserFriendlyException(L("RequiresTwoFactorAuth")); } if (!string.IsNullOrEmpty(returnUrl)) { return(Redirect(returnUrl)); } return(RedirectToAction("Index")); }