protected virtual ActionResult Login(LoginInfo loginInfo, Func<string, ActionResult> redirectAction) { if (!this.ModelState.IsValid) { return this.View(loginInfo); } var result = this.accountRepository.Login(loginInfo.Email, loginInfo.Password); if (result) { var redirectUrl = loginInfo.ReturnUrl; if (string.IsNullOrEmpty(redirectUrl)) { redirectUrl = this.accountsSettingsService.GetPageLinkOrDefault(Context.Item, Templates.AccountsSettings.Fields.AfterLoginPage, Context.Site.GetRootItem()); } return redirectAction(redirectUrl); } this.ModelState.AddModelError("invalidCredentials", "Username or password is not valid."); return this.View(loginInfo); }
public ActionResult Login(LoginInfo loginInfo) { return this.Login(loginInfo, redirectUrl => new RedirectResult(redirectUrl)); }
public ActionResult LoginDialog(LoginInfo loginInfo) { return this.Login(loginInfo, redirectUrl => this.Json(new LoginResult { RedirectUrl = redirectUrl })); }
public void LoginShouldReturnViewModelIfModelStateNotValid([Frozen] IAccountRepository repo, LoginInfo info, INotificationService service, IAccountsSettingsService accountSetting) { var controller = new AccountsController(repo, service, accountSetting, null); controller.ModelState.AddModelError("Error", "Error"); var result = controller.Login(info); result.Should().BeOfType<ViewResult>(); }
public void ShouldAddErrorToModelStateIfNotLoggedIn([Frozen] IAccountRepository repo, LoginInfo info, INotificationService service, IAccountsSettingsService accountSetting) { repo.Login(string.Empty, string.Empty).ReturnsForAnyArgs(x => false); var controller = new AccountsController(repo, service, accountSetting, null); var result = controller.Login(info); controller.ModelState.IsValid.Should().BeFalse(); controller.ModelState.Keys.Should().Contain("invalidCredentials"); }
public void LoginShouldRedirectToRootIfReturnUrlNotSet(Database db, [Content] DbItem item, [Frozen] IAccountRepository repo, LoginInfo info, INotificationService service, IAccountsSettingsService accountSetting) { accountSetting.GetPageLinkOrDefault(Arg.Any<Item>(), Arg.Any<ID>(), Arg.Any<Item>()).Returns("/"); var fakeSite = new FakeSiteContext(new StringDictionary { { "rootPath", "/sitecore/content" }, { "startItem", item.Name } }) as SiteContext; fakeSite.Database = db; Language.Current = Language.Invariant; using (new SiteContextSwitcher(fakeSite)) { info.ReturnUrl = null; var controller = new AccountsController(repo, service, accountSetting, null); repo.Login(string.Empty, string.Empty).ReturnsForAnyArgs(x => true); var result = controller.Login(info); result.Should().BeOfType<RedirectResult>().Which.Url.Should().Be("/"); } }
public void LoginShouldRedirectToReturnUrlIfLoggedIn([Frozen] IAccountRepository repo, LoginInfo info, INotificationService service, IAccountsSettingsService accountSetting) { var controller = new AccountsController(repo, service, accountSetting, null); repo.Login(string.Empty, string.Empty).ReturnsForAnyArgs(x => true); var result = controller.Login(info); result.Should().BeOfType<RedirectResult>().Which.Url.Should().Be(info.ReturnUrl); }
public void LoginDialogShouldReturnViewIfNotValid(IAccountRepository repo, [NoAutoProperties] AccountsController controller, LoginInfo info) { var result = controller.LoginDialog(info); result.Should().BeOfType<ViewResult>(); }
public void LoginDialogShouldRedirectIfLoggedIn(Database db, [Content] DbItem item, [Frozen] IAccountRepository repo, LoginInfo info, INotificationService service, IAccountsSettingsService accountSetting) { var controller = new AccountsController(repo, service, accountSetting, null); repo.Login(string.Empty, string.Empty).ReturnsForAnyArgs(x => true); var result = controller.LoginDialog(info); result.Should().BeOfType<JsonResult>(); ((result as JsonResult).Data as LoginResult).RedirectUrl.Should().BeEquivalentTo(info.ReturnUrl); }
public ActionResult Login(LoginInfo loginInfo) { if (!this.ModelState.IsValid) { return this.View(loginInfo); } var result = this.accountRepository.Login(loginInfo.Email, loginInfo.Password); if (result) { var redirectUrl = loginInfo.ReturnUrl; if (string.IsNullOrEmpty(redirectUrl)) { redirectUrl = "/"; } this.Response.Redirect(redirectUrl); } else { this.ModelState.AddModelError("invalidCredentials", "Username or password is not valid."); } return this.View(loginInfo); }