public async Task <ActionResult> Register(RegisterModel model) { if (ModelState.IsValid) { if (model.ConfirmedPassword != model.Password) { ModelState.AddModelError("", "Passwords don`t match"); return(View(model)); } User user = null; using (TradePlaceContext db = new TradePlaceContext()) { user = db.Users.FirstOrDefault(u => u.UserName == model.Login); } if (user == null) { using (TradePlaceContext db = new TradePlaceContext()) { var hashedPassword = BCrypt.Net.BCrypt.HashPassword(model.Password, WorkFactor); Roles.AddUserToRole(model.Login, "User"); db.Users.Add( new User { UserName = model.Login, PasswordHash = hashedPassword, EmailConfirmed = false, LockoutEnabled = false, AccessFailedCount = 0 }); await db.SaveChangesAsync(); user = db.Users.Where(u => u.UserName == model.Login).FirstOrDefault(); } if (user != null) { FormsAuthentication.SetAuthCookie(model.Login, true); return(RedirectToAction("Index", "Home")); } } else { ModelState.AddModelError("", "User with this Login already exist"); } } return(View(model)); }
public ActionResult Login(LoginModel model) { if (ModelState.IsValid) { User user = null; using (TradePlaceContext db = new TradePlaceContext()) { user = db.Users.FirstOrDefault(u => u.UserName == model.Login); if (user != null && BCrypt.Net.BCrypt.Verify(model.Password, user.PasswordHash)) { FormsAuthentication.SetAuthCookie(model.Login, true); return(RedirectToAction("Index", "Home")); } else { ModelState.AddModelError("", "User with this login and password don`t exist"); } } } return(View(model)); }