public async Task <ActionResult> VerifyCode(VerifyCodeViewModel model) { if (!ModelState.IsValid) { return(View(model)); } Users.Infrastructure.Helpers.SignInStatus result = await SignInHelper.TwoFactorSignIn(model.Provider, model.Code, isPersistent : false, rememberBrowser : model.RememberBrowser); switch (result) { case Users.Infrastructure.Helpers.SignInStatus.Success: var ident = HttpContext.User.Identity as ClaimsIdentity; ident.AddClaims(AdministratorClaimsProvider.AddAdministratorAccessToRoles(this, ident)); HttpContext.GetOwinContext().Authentication.User.AddIdentity(ident); return(RedirectToLocal(model.ReturnUrl)); case Users.Infrastructure.Helpers.SignInStatus.LockedOut: return(View("Lockout")); case Users.Infrastructure.Helpers.SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid code."); return(View(model)); } }
public async Task <ActionResult> Login(LoginViewModel details) { string returnUrl = TempData["returnUrl"] == null ? "" : TempData["returnUrl"].ToString(); if (ModelState.IsValid) { AppUser user = await UserManager.FindAsync(details.UserName, details.Password); if (user == null) { ModelState.AddModelError("", "Невалидно потребителско име или парола!"); } else { ClaimsIdentity ident = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); ident.AddClaims(AdministratorClaimsProvider.AddAdministratorAccessToRoles(this, ident)); AuthManager.SignOut(); AuthManager.SignIn(new AuthenticationProperties { IsPersistent = false }, ident); if (!user.IsGoogleAuthenticatorEnabled) { return(RedirectToAction("EnableGoogleAuthenticator", new { returnUrl = returnUrl, userName = user.UserName })); } Infrastructure.Helpers.SignInStatus result = await SignInHelper.PasswordSignIn(details.UserName, details.Password, false, shouldLockout : false); switch (result) { case Infrastructure.Helpers.SignInStatus.Success: return(RedirectToLocal(returnUrl)); case Infrastructure.Helpers.SignInStatus.LockedOut: return(View("Lockout")); case Infrastructure.Helpers.SignInStatus.RequiresTwoFactorAuthentication: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl })); case Infrastructure.Helpers.SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid login attempt."); return(View(details)); } } } TempData["returnUrl"] = returnUrl; return(View(details)); }