public async Task <ActionResult> ChangeMail([Bind(Include = "Email")] ChangeMailViewModel model) { int id = GetUserId(); SignInLogModel log = new SignInLogModel(); log.ClientIp = GetClientIp(); log.UserModelId = id; log.UserCode = GetSigninId(); if (!ModelState.IsValid) { return(View(model)); } IdentityResult result = await UserManager.SetEmailAsync(id, model.Email); if (!result.Succeeded) { AddErrors(result); return(View(model)); } log.SetStatus(4); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); return(View("MailChanged")); }
public async Task <ActionResult> Confirm(string key, string code) { if (string.IsNullOrWhiteSpace(key) || string.IsNullOrWhiteSpace(code)) { return(View("RequestMailError")); } IdentityResult result = await UserManager.ConfirmEmailAsync(int.Parse(key), code); if (result.Succeeded) { var user = UserManager.FindById(int.Parse(key)); SignInLogModel log = new SignInLogModel(); log.ClientIp = GetClientIp(); log.UserModelId = int.Parse(key); if (user != null) { log.UserCode = user.UserName; } log.SetStatus(3); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); return(View("MailConfirmComplete")); } else { return(View("RequestMailError")); } }
public ActionResult Reset([Bind(Include = "NewPassword,ConfirmPassword,Key,Token")] ResetViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = UserManager.FindById(model.Key); if (user == null) { ModelState.AddModelError("", AuthResources.RequestMailNoUser); return(View(model)); } var result = UserManager.ResetPassword(user.Id, model.Token, model.NewPassword); if (!result.Succeeded) { AddErrors(result); return(View(model)); } SignInLogModel log = new SignInLogModel(); log.ClientIp = GetClientIp(); log.UserModelId = user.Id; log.UserCode = user.UserName; log.SetStatus(2); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); UserManager.ResetAccessFailedCount(user.Id); return(View("ResetComplete")); }
public ActionResult ChangePassword( [Bind(Include = "CurrentPassword,NewPassword,ConfirmPassword")] ChangePasswordViewModel model) { int id = GetUserId(); SignInLogModel log = new SignInLogModel(); log.ClientIp = GetClientIp(); log.UserModelId = id; log.UserCode = GetSigninId(); if (!ModelState.IsValid) { return(View(model)); } if (model.CurrentPassword == model.NewPassword) { ModelState.AddModelError("NewPassword", AuthResources.PasswordChangeSame); return(View(model)); } IdentityResult result = UserManager.ChangePassword(id, model.CurrentPassword, model.NewPassword); if (!result.Succeeded) { AddErrors(result); return(View(model)); } log.SetStatus(1); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); return(View("PasswordChanged")); }
public ActionResult SignOut() { SignInLogModel log = new SignInLogModel(); log.UserModelId = GetUserId(); log.ClientIp = GetClientIp(); log.UserCode = GetSigninId(); log.SetStatus(5); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); Session.RemoveAll(); Session.Abandon(); AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); return(RedirectToHome()); }
public async Task <ActionResult> SignIn([Bind(Include = "SinginId,Password")] SignInViewModel model) { bool signIn = false; SignInLogModel log = new SignInLogModel(); log.ClientIp = GetClientIp(); log.UserCode = model.SinginId; if (!ModelState.IsValid) { log.SetStatus(-1); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); return(View(model)); } UserModel user = await UserManager.FindByNameAsync(model.SinginId); if (user != null) { log.UserModelId = user.Id; if (user.Deleted) { log.SetStatus(-2); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); ModelState.AddModelError("", AuthResources.AuthError); return(View(model)); } if (UserManager.IsLockedOut(user.Id)) { log.SetStatus(-3); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); ModelState.AddModelError("", AuthResources.AuthUserLockedOut); return(View(model)); } if (UserManager.CheckPassword(user, model.Password)) { if (user.Enabled == false) { log.SetStatus(-4); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); ModelState.AddModelError("", AuthResources.AuthUserDisabled); return(View(model)); } if (user.PasswordSkipCnt >= 3) { log.SetStatus(-5); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); ModelState.AddModelError("", AuthResources.AuthPasswordNoChange); return(View(model)); } signIn = true; } else { UserManager.AccessFailed(user.Id); if (UserManager.IsLockedOut(user.Id)) { log.SetStatus(-6); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); ModelState.AddModelError("", AuthResources.AuthUserLockedOutNow); return(View(model)); } } } if (signIn) { user = await UserManager.FindAsync(model.SinginId, model.Password); AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); ClaimsIdentity identity = await user.GenerateUserIdentityAsync(UserManager); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity); await UserManager.ResetAccessFailedCountAsync(user.Id); log.SetStatus(0); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); if (user.Expiration < DateTime.Now) { user.PasswordSkipCnt++; await UserManager.UpdateAsync(user); return(RedirectToAction("ExpirationChangePassword")); } // await UserManager.UpdateAsync(user); } else { log.SetStatus(-7); dbContext.SignInLogModels.Add(log); dbContext.SaveChanges(); ModelState.AddModelError("", AuthResources.AuthError); return(View(model)); } return(RedirectToHome()); }