/// <summary>
        /// 更新用户权限缓存
        /// </summary>
        /// <param name="userId"><用户Id/param>
        public static void UpdateUserPermissionCache(string userId)
        {
            string        cacheKey    = BuildCacheKey(userId);
            List <string> permissions = new List <string>();

            BaseBusiness <Base_PermissionUser> _db = new BaseBusiness <Base_PermissionUser>();
            var userPermissions   = _db.GetIQueryable().Where(x => x.UserId == userId).Select(x => x.PermissionValue).ToList();
            var theUser           = _db.Service.GetIQueryable <Base_User>().Where(x => x.UserId == userId).FirstOrDefault();
            var roleIdList        = Base_UserBusiness.GetUserRoleIds(userId);
            var rolePermissions   = _db.Service.GetIQueryable <Base_PermissionRole>().Where(x => roleIdList.Contains(x.RoleId)).GroupBy(x => x.PermissionValue).Select(x => x.Key).ToList();
            var existsPermissions = userPermissions.Concat(rolePermissions).Distinct();

            permissions = existsPermissions.ToList();
            CacheHelper.Cache.SetCache(cacheKey, permissions);
        }
        /// <summary>
        /// 根据UserID获取用户所有权限信息
        /// </summary>
        /// <param name="userId">用户Id</param>
        /// <returns></returns>
        public Base_User GetCurrentUserInfo(string userId)
        {
            var param = new List <DbParameter>
            {
                new SqlParameter("@userId", userId)
            };
            Base_User data    = null;
            string    sqlStr  = @"SELECT * FROM dbo.Base_User WHERE UserId=@userId;
SELECT a.* FROM dbo.Base_SysRole a INNER JOIN dbo.Base_UserRoleMap b ON a.RoleId=b.RoleId WHERE b.UserId=@userId;
SELECT DISTINCT(a.Id),a.* FROM dbo.Base_SysNavigation a 
INNER JOIN dbo.Base_SysRoleNavMap b ON a.Id=b.NavId
INNER JOIN dbo.Base_SysRole c ON b.RoleId=c.RoleId
INNER JOIN dbo.Base_UserRoleMap d ON c.RoleId=d.RoleId WHERE d.UserId=@userId;
SELECT DISTINCT(a.Id),a.* FROM dbo.Base_SysButton a 
INNER JOIN dbo.Base_SysRoleButtonMap b ON a.Id=b.BtnId
INNER JOIN dbo.Base_SysRole c ON b.RoleId=c.RoleId
INNER JOIN dbo.Base_UserRoleMap d ON c.RoleId=d.RoleId WHERE d.UserId=@userId;
";
            var       dataSet = GetDataSetWithSql(sqlStr, param);

            if (dataSet.Tables.Count != 0)
            {
                //dataSet[0] 用户信息
                if (dataSet.Tables[0] != null)
                {
                    data = dataSet.Tables[0].ToList <Base_User>().FirstOrDefault();
                }
                //dataSet[1] 角色集合
                if (dataSet.Tables[1] != null && data != null)
                {
                    data.Base_SysRoles = dataSet.Tables[1].ToList <Base_SysRole>();
                }
                //dataSet[2] 菜单集合
                if (dataSet.Tables[2] != null && data != null)
                {
                    var sysnavs = dataSet.Tables[2].ToList <Base_SysNavigation>();
                    sysnavs = sysnavs.OrderBy(c => c.SortNum).ToList();
                    var topNav = sysnavs.Where(c => string.IsNullOrEmpty(c.ParentId)).ToList();
                    data.Base_SysNavigations = Base_UserBusiness.navigationDtos(sysnavs, topNav);
                }
                //dataSet[3] 按钮集合
                if (dataSet.Tables[3] != null && data != null)
                {
                    data.Base_SysButtons = dataSet.Tables[3].ToList <Base_SysButton>();
                }
            }
            return(data);
        }
示例#3
0
        /// <summary>
        /// 获取所有数据列表
        /// </summary>
        /// <returns></returns>
        public List <Base_SysNavigationDto> GetMenuTrees()
        {
            var q       = GetIQueryable().OrderBy(c => c.SortNum).ToList();
            var topNav  = q.Where(c => string.IsNullOrEmpty(c.ParentId)).ToList();
            var treeNav = Base_UserBusiness.navigationDtos(q, topNav);
            Base_SysNavigationDto sysnav = new Base_SysNavigationDto
            {
                id       = topNavId,
                label    = "顶级菜单",
                children = treeNav
            };
            var listData = new List <Base_SysNavigationDto>();

            listData.Add(sysnav);
            return(listData);
        }
示例#4
0
        /// <summary>
        /// 获取用户权限模块
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static List <PermissionModule> GetUserPermissionModules(string userId)
        {
            var           userInfo       = Base_UserBusiness.GetTheUser(userId);
            List <string> hasPermissions = new List <string>();

            if (userInfo.RoleType.HasFlag(RoleType.超级管理员))
            {
                hasPermissions = _allPermissionValues.DeepClone();
            }
            else
            {
                hasPermissions = GetUserPermissionValues(userId);
            }

            return(GetPermissionModules(hasPermissions));
        }