public ActionResult Login(UserLoginViewModel user) { if (!ModelState.IsValid) { return(View(user)); } if (ModelState.IsValid) { //1. check user as status? var checkUser = UserRepository.CheckUserName(user.UserName); if (checkUser != null) { if (checkUser.IsLocked) { ModelState.AddModelError("Locked", Resources.Messages.Account_Login_Locked); return(View(user)); } var userLogin = UserRepository.Login(user.UserName, user.Password); if (userLogin != null) { //Get all role of current user login var userRoleInfo = UserRoleRepository.GetRolesByUserId(userLogin.Id); var roles = GetRolesOfUser(userRoleInfo, userLogin); var identities = new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, userLogin.Id.ToString()), new Claim(ClaimTypes.Name, userLogin.UserName), new Claim(ClaimTypes.Surname, userLogin.HoVaTen) }.Concat(roles), "ApplicationCookie", ClaimTypes.Name, ClaimTypes.Role); AuthenticationManager.SignIn(identities); return(Redirect(GetRedirectUrl(user.ReturnUrl))); } ModelState.AddModelError("", Resources.Messages.Account_Login_Incorrect); return(View(user)); } ModelState.AddModelError("", Resources.Messages.Account_Login_Incorrect); return(View(user)); } return(View()); }
public IQueryable <UserRole> GetRolesByUserId(int userId) { return(_userRoleRepository.GetRolesByUserId(userId)); }