public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null) { if (!ModelState.IsValid) { return(View(model)); } LoginActionObject loginActionObj = _accountActions.Login(model.UserName, model.Password); if (loginActionObj.UserExists) { if (model.RememberMe) { await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, loginActionObj.ClaimsObject, new AuthenticationProperties { IsPersistent = true }); } else { await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, loginActionObj.ClaimsObject, new AuthenticationProperties { IsPersistent = false }); } return(RedirectToAction("Index", "Order")); } ViewBag.errorMessage = "User name or password wrong. Please try again. *"; return(View()); }
public LoginActionObject Login(string userName, string password) { using (_unitOfWork) { var user = _unitOfWork.UserRepository.GetUserByNameAndPassword(userName, Hash(password)); bool userExists = user != null; ClaimsPrincipal principal = new ClaimsPrincipal(); if (userExists) { List <Claim> claims = new List <Claim> { new Claim(ClaimTypes.Name, user.UserName) }; foreach (int role in _unitOfWork.UserRepository.GetUserRolesByUserId(user.UserId)) { claims.Add(new Claim(ClaimTypes.Role, ((Enums.Department)role).ToString())); } if (user.IsAdmin) { claims.Add(new Claim(ClaimTypes.Role, "admin")); } ClaimsIdentity userIdentity = new ClaimsIdentity(claims, "login"); principal = new ClaimsPrincipal(userIdentity); LoginActionObject loginActionObj = new LoginActionObject() { ClaimsObject = principal, UserExists = userExists }; _unitOfWork.LogRepository.CreateLog( user.UserName, "Logged in.", DateTime.Now, null); _unitOfWork.Complete(); } return(new LoginActionObject { UserExists = userExists, ClaimsObject = principal }); } }