예제 #1
0
        List <PermissionMenu> GetMenus()
        {
            List <PermissionMenu> ret = new List <PermissionMenu>();

            IUserService       userService = this.CreateService <IUserService>();
            IPermissionService authService = this.CreateService <IPermissionService>();

            Dictionary <string, SysPermission> userPermissionDic = null;

            if (!this.CurrentSession.IsAdmin)
            {
                List <SysPermission> userPermissions = userService.GetUserPermissions(this.CurrentSession.UserId);
                userPermissionDic = userPermissions.ToDictionary(a => a.Id);
            }

            List <SysPermission> permissionMenus = authService.GetPermissionMenus();

            List <SysPermission> parentPermissions = permissionMenus.Where(a => a.ParentId == null).ToList();

            foreach (SysPermission item in parentPermissions)
            {
                PermissionMenu permissionMenu = PermissionMenu.Create(item);

                List <PermissionMenu> childMenus = new List <PermissionMenu>();
                GatherChildMenus(permissionMenus, item, childMenus, userPermissionDic);

                permissionMenu.Children.AddRange(childMenus);
                ret.Add(permissionMenu);
            }

            ret = ret.Where(a => !(a.Type == PermissionType.节点组 && a.Children.Count == 0)).OrderBy(a => a.SortCode).ToList();

            return(ret);
        }
예제 #2
0
        public static PermissionMenu Create(SysPermission permission)
        {
            PermissionMenu ret = new PermissionMenu()
            {
                Id       = permission.Id,
                Name     = permission.Name,
                ParentId = permission.ParentId,
                Type     = permission.Type,
                Url      = permission.Url,
                Icon     = permission.Icon,
                SortCode = permission.GetSortCode(),
            };

            return(ret);
        }
예제 #3
0
        void GatherChildMenus(List <SysPermission> permissions, SysPermission permission, List <PermissionMenu> list, Dictionary <string, SysPermission> userPermissionDic)
        {
            var childPermissions = permissions.Where(a => a.ParentId == permission.Id).OrderBy(a => a.SortCode);

            foreach (SysPermission childPermission in childPermissions)
            {
                if (childPermission.Type == PermissionType.节点组)
                {
                    GatherChildMenus(permissions, childPermission, list, userPermissionDic);
                    continue;
                }

                if (childPermission.Type != PermissionType.公共菜单 && !this.CurrentSession.IsAdmin)
                {
                    if (!userPermissionDic.ContainsKey(childPermission.Id))
                    {
                        continue;
                    }
                }

                list.Add(PermissionMenu.Create(childPermission));
            }
        }