예제 #1
0
        // neil 20180508 新增權限判斷 end

        public static bool CheckIsLogin()
        {
            Areas.Backend.Models.MemberModels curUser = WorkV3.Areas.Backend.Models.DataAccess.MemberDAO.SysCurrent;
            if (curUser == null)
            {
                return(false);
            }
            return(true);
        }
예제 #2
0
        public static bool HavePermission(int menuType, long menuId, long siteId)
        {
            Areas.Backend.Models.MemberModels member = Areas.Backend.Models.DataAccess.MemberDAO.SysCurrent;
            if (member == null)
            {
                return(false);
            }

            return(HavePermission(member.GroupId, siteId, menuType, menuId));
        }
예제 #3
0
        public static bool HavePermission(string menu, long?siteId)
        {
            Areas.Backend.Models.MemberModels curUser = WorkV3.Areas.Backend.Models.DataAccess.MemberDAO.SysCurrent;
            if (curUser == null)
            {
                return(false);
            }

            return(WorkV3.Golbal.PermissionCheck.havePermission(curUser.Id, menu, siteId));
        }
예제 #4
0
        // shan 20180829 新增後台管理能權限判斷(不分站台的)
        /// <summary>
        /// 後台,判斷使用者所在群組是否有觀看左側選單指定項目的權限
        /// 主要是為了防止在產生選單時一直抓取 SQL 資料,所以第一個參數給入要判斷的群組相關的權限設定
        /// </summary>
        /// <param name="permissions">使用者所在群組的選單權限列表</param>
        /// <param name="siteId"></param>
        /// <param name="menuType">選單類型:1: 後台選單,2: 前台選單</param>
        /// <param name="menuId">選單ID</param>
        /// <param name="groupId">Group ID,若不指定則為目前登入使用所屬的 Group</param>
        /// <returns>回傳是否有觀看權限</returns>
        public static bool HavePermission(IEnumerable <WorkV3.Areas.Backend.Models.GroupPermissionModels> permissions, Areas.Backend.Abstracts.Menu item, long groupId = -1)
        {
            long menuId = item.ID;
            int  menuType;

            string typeName = item.GetType().Name;

            switch (typeName)
            {
            case "MenusModels":
            default:
                menuType = 2;
                break;

            case "BackendMenuModel":
                menuType = 1;
                break;
            }

            Areas.Backend.Models.MemberModels curUser = WorkV3.Areas.Backend.Models.DataAccess.MemberDAO.SysCurrent;
            if (curUser == null && groupId == -1)
            {
                return(false);
            }

            bool returnValue = false;

            groupId = groupId == -1 ? curUser.GroupId : groupId;
            Areas.Backend.Models.GroupModels group = Areas.Backend.Models.GroupDAO.GetItem(groupId);

            if (group.GroupType == 0)
            {
                group.GroupType = 1;
            }

            if (group.GroupType == 1)       // 權限全開,使用黑名單設定不能進入的選單
            {
                returnValue = true;
                if (permissions == null)
                {
                    return(true);
                }
                IEnumerable <WorkV3.Areas.Backend.Models.GroupPermissionModels> filtered = permissions.Where(m => m.MenuType == menuType && m.MenuID == menuId);

                return(!filtered.Any());
            }
            else if (group.GroupType == 2)   // 權限全關,使用白名單設定能夠進入的選單
            {
                foreach (Areas.Backend.Models.GroupPermissionModels permission in permissions)
                {
                    // 只要發現 true 直接回傳
                    if (permission.MenuType == menuType && permission.MenuID == menuId)
                    {
                        return(true);
                    }
                }

                // 子選單如果有權限的話,該選單也回傳 true
                IEnumerable <WorkV3.Areas.Backend.Abstracts.Menu> childrenMenu = WorkV3.Areas.Backend.Models.DataAccess.BackendMenuDAO.GetChildren(menuId);
                foreach (WorkV3.Areas.Backend.Abstracts.Menu menu in childrenMenu)
                {
                    // recursive
                    returnValue = HavePermission(permissions, menu, groupId);

                    if (returnValue)
                    {
                        return(returnValue);
                    }
                }
            }

            return(returnValue);
        }