public async Task <string> AuthenticatedApi(AppUserRequest request) { var user = await _userManager.FindByEmailAsync(request.Email); if (user == null) { return("-1"); } //var result =await _signInManager.PasswordSignInAsync(request.Email, request.PasswordHash, request.RememberMe, true); var role = await _userManager.GetRolesAsync(user); if (user == null) { return("0"); } var claims = new[] { new Claim(ClaimTypes.Email, user.Email), new Claim(ClaimTypes.Name, user.FirtsName), new Claim(ClaimTypes.Role, string.Join(';', role)), new Claim(ClaimTypes.Name, user.FirtsName + " " + user.LastName) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"])); var credential = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken(_config["Tokens:Issuer"], _config["Tokens:Issuer"], claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: credential); return(new JwtSecurityTokenHandler().WriteToken(token)); }
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 <int> UpdateDescription(AppUserRequest request) { var user = await FindUserId(request.Id); if (user != null) { user.DescriptionChannel = request.DescriptionChannel; _context.Update(user); return(await _context.SaveChangesAsync()); } return(-1); }
public async Task <bool> Login(AppUserRequest model) { var user = await FindUser(model.Email); var result = await _signInManager.PasswordSignInAsync(model.Email, model.PasswordHash, model.RememberMe, lockoutOnFailure : false); if (result.Succeeded) { UserAuthenticated.checkUserAuthenticated(user); return(result.Succeeded); } return(false); }
public async Task <IActionResult> UpdateDescription(AppUserRequest request) { if (request != null) { var result = await _userService.UpdateDescription(request); if (result > 0) { new UserAuthenticated().UpdateImgChannel(request.Id, null, request.DescriptionChannel); return(Content("Success")); } } return(Content("Error")); }
public async Task <IActionResult> Register(AppUserRequest model, IFormFile avartarFile) { if (ModelState.IsValid) { if (_userService.Register(model, avartarFile).Result) { var user = await _userService.FindUser(model.Email); //generation token email GenerationTokenEmail(user, ConfirmEmailAccount.Register.ToString()); return(Redirect("EmailVerification")); } } ModelState.AddModelError("Lỗi", "Đăng ký không thành công"); return(View()); }
public async Task <IActionResult> Register(AppUserRequest model, IFormFile avartarFile) { if (ModelState.IsValid) { if (await _userService.Register(model, avartarFile)) { var user = await _userService.FindUser(model.Email); //generation token email GenerationTokenEmail(user, ConfirmEmailAccount.Register.ToString(), true); var url = Url.RouteUrl(new { action = "EmailVerification", controller = "Home", area = "" }); return(Redirect(url)); } } ModelState.AddModelError("Lỗi", "Đăng ký không thành công"); return(View()); }
public async Task <bool> Register(AppUserRequest model, IFormFile avartarFile) { var user = new AppUser { UserName = model.Email, Email = model.Email, FirtsName = model.FirtsName, LastName = model.LastName, LockoutEnabled = false, CreateDate = new GetDateNow().DateNow }; var result = await _userManager.CreateAsync(user, model.PasswordHash); if (result.Succeeded) { var findUser = await _userManager.FindByEmailAsync(model.Email); if (avartarFile == null) { findUser.Avartar = "avartarDefault.JPG"; } else { findUser.Avartar = findUser.Id.ToString() + "." + avartarFile.FileName.Split('.')[1]; using (var fileStream = new FileStream(Path.Combine("wwwroot" + "/Client/avartar", findUser.Avartar), FileMode.Create, FileAccess.Write)) { avartarFile.CopyTo(fileStream); } } var resultUpdate = await _userManager.UpdateAsync(findUser); if (resultUpdate.Succeeded) { return(true); } } return(false); }
public async Task <IActionResult> Authenticated([FromBody] LoginRequest requestLogin) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var request = new AppUserRequest { PasswordHash = requestLogin.PasswordHash, Email = requestLogin.Email }; var result = await _userService.AuthenticatedApi(request); if (result == "-1") { return(BadRequest("Cannot find user in Database")); } if (result == "0") { return(BadRequest("Password or UserNam InCorrect")); } return(Ok(result)); }
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()); } } }