public async Task <IActionResult> Login(AppUserRequest model) { if (model.Email != userEmail) { countLockout = 0; } userEmail = model.Email; var user = await _userService.FindUser(model.Email); ViewBag.ExternaLogin = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (user == null) { ModelState.AddModelError(string.Empty, "Tài khoản chưa đăng ký, đăng ký để tiếp tục!"); return(View()); } else { if (user.LockoutEnabled) { var reusult = await _userService.Login(model); if (reusult) { var login = new LoginRequest { Email = model.Email, PasswordHash = model.PasswordHash }; var token = await _userApiClient.Authenticated(login); HttpContext.Session.SetString("Token", token); return(RedirectToAction("Index", "Home")); } else { countLockout++; if (countLockout >= 5 && user.LockoutEnabled) { await _userService.UpdateLockout(user); ModelState.AddModelError(string.Empty, "Tài khoản đã bị khóa" + " vui lòng liên hệ Admin để được hỗ trợ"); return(View()); } ModelState.AddModelError(string.Empty, "Lưu ý nhập sai 5 lần liên tiếp sẽ khóa tài khoản!"); ModelState.AddModelError(string.Empty, "Sai tài khoản hoặc mật khẩu vui lòng nhập lại!"); return(View()); } } else { ModelState.AddModelError(string.Empty, "Tài khoản đã bị khóa" + " vui lòng liên hệ Admin để được hỗ trợ"); return(View()); } } }
public async Task <IActionResult> Login(AppUserRequest appUser, string RememberMe) { var result = await _userService.Login(appUser); var user = await _userService.FindUser(appUser.Email); if (result) { if (RememberMe != null) { var cookieOptions = new CookieOptions(); cookieOptions.Expires = DateTime.Now.AddDays(1); Response.Cookies.Append("userName", user.Email, cookieOptions); Response.Cookies.Append("password", appUser.PasswordHash, cookieOptions); } else { foreach (var cookie in Request.Cookies.Keys) { Response.Cookies.Delete(cookie); } } await _signInManager.SignInAsync(user, false); if (await _userManager.IsInRoleAsync(user, "Admin") || await _userManager.IsInRoleAsync(user, "Manager")) { var loginRequest = new LoginRequest { Email = appUser.Email, PasswordHash = appUser.PasswordHash }; var token = await _userApiClient.Authenticated(loginRequest); HttpContext.Session.SetString("Token", token); return(RedirectToAction("Index", "Home")); } else { await _signInManager.SignOutAsync(); ModelState.AddModelError(string.Empty, "Tài khoản không có quyền vui lòng liên hệ Admin!"); return(View()); } } else { if (user == null) { ModelState.AddModelError(string.Empty, "Tài khoản không tồn tại!"); return(View()); } else { countLockoutAdmin++; if (countLockoutAdmin >= 5 & user.LockoutEnabled) { await _userService.UpdateLockout(user); ModelState.AddModelError(string.Empty, "- Tài khoản đã bị khóa" + " vui lòng liên hệ Admin để được hỗ trợ"); return(View()); } ModelState.AddModelError(string.Empty, "- Sai tài khoản hoặc mật khẩu vui lòng nhập lại!"); ModelState.AddModelError(string.Empty, "- Lưu ý nhập sai 5 lần liên tiếp sẽ khóa tài khoản!"); return(View()); } } }