Beispiel #1
0
        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());
        }
Beispiel #2
0
        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
                });
            }
        }