//查询账户的栏目(账户内的) public List <PermissionColumn> GetColumnListByUser(string userId, string websiteOwner, bool showHide = false) { List <PermissionColumn> list = new List <PermissionColumn>(); BLLPermission bllPermission = new BLLPermission(); List <UserPmsGroupRelationInfo> pmsGroupRelList = bllPermission.GetUserPmsGroupRelListByUserId(userId); if (pmsGroupRelList.Count == 0) { return(list); } string group_ids = ZentCloud.Common.MyStringHelper.ListToStr(pmsGroupRelList.Select(p => p.GroupID).ToList(), "", ","); List <PermissionRelationInfo> colList = bllPermission.GetMultPermissionRelationList(group_ids, 3); if (colList.Count == 0) { return(list); } List <long> colId_list = colList.Select(p => p.PermissionID).ToList(); list = GetAllColumnListByWebsiteOwner(websiteOwner, showHide); list = list.Where(p => colId_list.Contains(p.PermissionColumnID)).ToList(); return(list); }
/// <summary> /// 判断用户是否拥有指定页面路径权限(新) /// </summary> /// <param name="userId">用户账号</param> /// <param name="websiteOwner">站点所有者</param> /// <param name="path">路径</param> /// <param name="nAction">action</param> /// <returns></returns> public bool NewCheckUserAndPath(string userId, string websiteOwner, string path, string nAction) { BLLPermission bllPer = new BLLPermission(); List <PermissionInfo> pmsList = bllPer.GetPermissionListByPath(path);//获取页面路径权限ID if (!string.IsNullOrWhiteSpace(nAction)) { pmsList = pmsList.Where(p => string.IsNullOrWhiteSpace(p.PermissionAction) || p.PermissionAction == nAction).ToList(); } if (pmsList.Count == 0) { return(false); } List <long> pmsIDList = pmsList.Select(p => p.PermissionID).ToList(); List <PermissionRelationInfo> rel_column_list = new List <PermissionRelationInfo>(); List <PermissionColumn> column_list = new List <PermissionColumn>(); List <long> pmsGroupIdList = GetPmsGroupIDByUser(userId); string groupIds = "''"; if (pmsGroupIdList.Count > 0) { groupIds = MyStringHelper.ListToStr(pmsGroupIdList, "'", ","); rel_column_list = bllPer.GetMultPermissionRelationList(groupIds, 3); if (rel_column_list.Count > 0) { string columnRelationIds = MyStringHelper.ListToStr(rel_column_list.Select(p => p.PermissionID).ToList(), "", ","); column_list = bllPer.GetMultListByKey <PermissionColumn>("PermissionColumnID", columnRelationIds); } } if (!string.IsNullOrWhiteSpace(websiteOwner) && userId == websiteOwner) { List <PermissionColumn> column_list1 = bllPer.GetListByKey <PermissionColumn>("WebsiteOwner", websiteOwner); column_list.AddRange(column_list1); } if (column_list.Count == 0) { return(false); } List <long> columnId_list = column_list.Select(p => p.PermissionColumnID).ToList(); List <long> columnId_list1 = column_list.Where(p => p.PermissionColumnBaseID > 0).Select(p => p.PermissionColumnBaseID).ToList(); columnId_list.AddRange(columnId_list1); string columnIdStrs = MyStringHelper.ListToStr(columnId_list, "'", ","); List <PermissionRelationInfo> column_per_list = bllPer.GetMultPermissionRelationList(columnIdStrs, 2); List <long> npmsIDList = column_per_list.Select(p => p.PermissionID).ToList(); foreach (long pmsID in pmsIDList) { if (npmsIDList.Contains(pmsID)) { return(true); } } return(false); }
/// <summary> /// 检查栏目权限返回菜单 /// </summary> /// <returns></returns> public List <MenuInfo> CheckPermissionColumnList(List <MenuInfo> list, string websiteOwner, UserInfo curUser) { List <MenuInfo> result = new List <MenuInfo>(); if (list.Count == 0) { return(result); } string relationIds = "''"; List <long> pmsGroupIdList = GetPmsGroupIDByUser(curUser.UserID); List <PermissionRelationInfo> rel_column_list = new List <PermissionRelationInfo>(); List <PermissionColumn> column_list = new List <PermissionColumn>(); BLLPermission bllPermission = new BLLPermission(); string columnRelationIds = "0"; if (pmsGroupIdList.Count > 0) { relationIds = MyStringHelper.ListToStr(pmsGroupIdList, "'", ","); rel_column_list = bllPermission.GetMultPermissionRelationList(relationIds, 3); if (rel_column_list.Count > 0) { columnRelationIds = MyStringHelper.ListToStr(rel_column_list.Select(p => p.PermissionID).ToList(), "", ","); column_list = bllPermission.GetMultListByKey <PermissionColumn>("PermissionColumnID", columnRelationIds); } } if (!string.IsNullOrWhiteSpace(websiteOwner) && curUser.UserID == websiteOwner) { List <PermissionColumn> column_list1 = bllPermission.GetListByKey <PermissionColumn>("WebsiteOwner", websiteOwner); column_list.AddRange(column_list1); } if (column_list.Count == 0) { return(result); } List <long> columnId_list = column_list.Select(p => p.PermissionColumnID).ToList(); List <long> columnId_list1 = column_list.Where(p => p.PermissionColumnBaseID > 0).Select(p => p.PermissionColumnBaseID).ToList(); columnId_list.AddRange(columnId_list1); string columnRelationIdStrs = MyStringHelper.ListToStr(columnId_list, "'", ","); BLLMenuInfo bllMenu = new BLLMenuInfo(); List <MenuRelationInfo> column_menu_list = bllMenu.GetMenuRelationListByRelationIds(columnRelationIdStrs, 5); if (column_menu_list.Count == 0) { return(result); } List <long> menuId_list = column_menu_list.Select(p => p.MenuID).ToList(); result = list.Where(p => menuId_list.Contains(p.MenuID)).ToList(); return(result); }
/// <summary> /// 检查用户和系统键值 /// </summary> /// <param name="userId"></param> /// <param name="pkey"></param> /// <returns></returns> public bool CheckUserAndPmsKey(string userId, Enums.PermissionSysKey pkey, string websiteOwner = "") { if (websiteOwner == "") { websiteOwner = WebsiteOwner; } UserInfo userInfo; if (string.IsNullOrEmpty(websiteOwner)) { websiteOwner = WebsiteOwner; } if (userId == "jubit") { //userInfo = Get<UserInfo>(string.Format(" UserID='{0}' ", userId)); return(true); } else { userInfo = Get <UserInfo>(string.Format(" UserID='{0}' AND WebsiteOwner='{1}' ", userId, websiteOwner)); } if (userInfo == null) { return(false); } var key = CommonPlatform.Helper.EnumStringHelper.ToString(pkey); //先查出对应权限,不存在返回false var pms = GetPmsByPmsKey(key); if (pms == null) { return(false); } //站点权限禁用时返回false if (CheckWebsiteOwnerDisabled(websiteOwner, pms.PermissionID)) { return(false); } //判断是否是配置的管理员 if (userInfo.PermissionGroupID.HasValue) { ZentCloud.BLLPermission.Model.PermissionGroupInfo perGroupInfo = Get <ZentCloud.BLLPermission.Model.PermissionGroupInfo>(string.Format(" GroupID={0}", userInfo.PermissionGroupID)); if (perGroupInfo != null && perGroupInfo.GroupType == 3)//管理员权限跟站点所有者一致 { userId = userInfo.WebsiteOwner; } } bool result = CheckUserAndPms(userId, pms.PermissionID); if (!result && userId == websiteOwner) { BLLPermission bllPer = new BLLPermission(); List <PermissionColumn> column_list = bllPer.GetListByKey <PermissionColumn>("WebsiteOwner", websiteOwner); if (column_list.Count > 0) { string columnIdStrs = MyStringHelper.ListToStr(column_list.Select(p => p.PermissionColumnID).ToList(), "'", ","); List <PermissionRelationInfo> column_per_list = bllPer.GetMultPermissionRelationList(columnIdStrs, 2); result = column_per_list.Exists(p => p.PermissionID == pms.PermissionID); } } return(result); }
/// <summary> /// 获取用户所有权限ID /// </summary> /// <param name="userId">用户ID</param> /// <returns>所有权限ID集合</returns> public List <long> GetUserAllPmsID(string userId) { UserInfo userInfo = Get <UserInfo>(string.Format(" UserID='{0}'", userId)); if (userInfo == null) { return(new List <long>()); } if (userInfo.PermissionGroupID.HasValue) { ZentCloud.BLLPermission.Model.PermissionGroupInfo perGroupInfo = Get <ZentCloud.BLLPermission.Model.PermissionGroupInfo>(string.Format(" GroupID={0}", userInfo.PermissionGroupID)); if (perGroupInfo != null && perGroupInfo.GroupType == 3)//管理员权限跟站点所有者一致 { userId = userInfo.WebsiteOwner; } } List <long> result = new List <long>(); //获取 用户-权限 列表 result.AddRange(GetList <Model.PermissionRelationInfo>( string.Format(" RelationID = '{0}' and RelationType = 1 ", userId) ).Select(p => p.PermissionID)); //获取 组-权限 列表 //long groupID = GetPmsGroupIDByUser(userID); //if (groupID > 0) //{ // result.AddRange(GetList<Model.PermissionRelationInfo>( // string.Format(" RelationID = '{0}' and RelationType = 0 ", groupID.ToString()) // ).Select(p => p.PermissionID)); //} foreach (long item in GetPmsGroupIDByUser(userId)) { result.AddRange(GetList <Model.PermissionRelationInfo>( string.Format(" RelationID = '{0}' and RelationType = 0 ", item.ToString()) ).Select(p => p.PermissionID)); //检查栏目内权限 foreach (PermissionRelationInfo citem in BaseCacheGetPermissionRelationList(3, item.ToString(), null)) { List <PermissionRelationInfo> list = BaseCacheGetPermissionRelationList(2, citem.PermissionID.ToString(), null); if (list.Count > 0) { result.AddRange(list.Select(p => p.PermissionID)); } } } if (userId == userInfo.WebsiteOwner) { List <PermissionColumn> column_list = GetListByKey <PermissionColumn>("WebsiteOwner", userId); if (column_list.Count > 0) { List <long> columnIdList = column_list.Select(p => p.PermissionColumnID).ToList(); List <long> columnIdList1 = column_list.Where(p => p.PermissionColumnBaseID > 0).Select(p => p.PermissionColumnBaseID).ToList(); columnIdList.AddRange(columnIdList1); string columnIdStrs = MyStringHelper.ListToStr(columnIdList, "'", ","); BLLPermission bllPer = new BLLPermission(); List <PermissionRelationInfo> columnPerList = bllPer.GetMultPermissionRelationList(columnIdStrs, 2); if (columnPerList.Count > 0) { result.AddRange(columnPerList.Select(p => p.PermissionID)); } } } return(result.Distinct().ToList()); }