Esempio n. 1
0
        public bool CheckLogin(string loginName, string loginPassword)
        {
            var user = dao.GetList(x => x.UserName == loginName && x.EnabledMark == (int)EnabledMarkEnum.Valid).SingleOrDefault(x => x.UserName == loginName);

            if (user == null)
            {
                return(false);
            }
            else
            {
                string dbPwdHash   = user.PasswordHash;
                string salt        = user.PasswordSalt;
                string userPwdHash = Md5Utils.EncryptTo32(salt + loginPassword);
                return(dbPwdHash == userPwdHash);
            }
        }
        public List <SysAction> GetPermission(int userId)
        {
            List <SysAction> sysActions = new List <SysAction>();
            //获取用户
            var user = SysUserDao.GetList(x => x.Id == userId && x.EnabledMark == (int)EnabledMarkEnum.Valid).FirstOrDefault();

            if (user == null)
            {
                return(sysActions);
            }
            //根据角色查找用户所拥有的权限
            var userRoles = user.SysRoles.Where(x => x.EnabledMark == (int)EnabledMarkEnum.Valid).Select(x => x.SysActions).ToList();

            foreach (var item in userRoles)
            {
                sysActions.AddRange(item);
            }
            //查找用户直接关联的权限
            var userActions = user.SysUserActions;

            if (userActions.Count != 0)
            {
                //允许的权限
                var userActionsByTrue = userActions.Where(x => x.HasPermisssin == true).Select(x => x.SysAction).ToList();
                //禁止的权限
                var userActionsByFalse = userActions.Where(x => x.HasPermisssin == false).Select(x => x.SysAction).ToList();
                if (userActionsByTrue.Count() != 0)
                {
                    sysActions.AddRange(userActionsByTrue);
                }
                if (userActionsByFalse.Count() != 0)
                {
                    foreach (var item in userActionsByFalse)
                    {
                        sysActions.Remove(item);
                    }
                }
            }
            //去重
            sysActions = sysActions.GroupBy(x => x.Id).Select(x => x.First()).ToList();
            return(sysActions);
        }