public ActionResult GetExceptionMenuAjaxByRole(long RoleID,long? AuthorID) { RoleMenuQuery menuRoleQuery = new RoleMenuQuery(); menuRoleQuery.JournalID = JournalID; menuRoleQuery.RoleID = RoleID; menuRoleQuery.GroupID = CurAuthor.GroupID; menuRoleQuery.AuthorID = AuthorID; ISiteSystemFacadeService siteSystemService = ServiceContainer.Instance.Container.Resolve<ISiteSystemFacadeService>(); return Content(JsonConvert.SerializeObject(siteSystemService.GetHaveRightMenuAjaxByRole(menuRoleQuery))); }
public ActionResult GetHaveRightMenuAjax() { RoleMenuQuery menuRoleQuery = new RoleMenuQuery(); menuRoleQuery.JournalID = JournalID; menuRoleQuery.RoleID = CurAuthor.RoleID; menuRoleQuery.AuthorID = CurAuthor.AuthorID; menuRoleQuery.GroupID = CurAuthor.GroupID; menuRoleQuery.IsExpend = CurAuthor.GroupID == 1 ? false : true; ISiteSystemFacadeService siteSystemService = ServiceContainer.Instance.Container.Resolve<ISiteSystemFacadeService>(); return Content(JsonConvert.SerializeObject(siteSystemService.GetHaveRightMenu(menuRoleQuery))); }
/// <summary> /// 获取指定角色拥有的菜单 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<MenuEntity> GetHaveRightMenuList(RoleMenuQuery query) { return RoleMenuDataAccess.Instance.GetHaveRightMenuList(query); }
/// <summary> /// 获取所有符合查询条件的数据 /// </summary> /// <param name="roleMenuQuery">RoleMenuQuery查询实体对象</param> /// <returns>List<RoleMenuEntity></returns> public List<RoleMenuEntity> GetRoleMenuList(RoleMenuQuery roleMenuQuery) { return RoleMenuBusProvider.GetRoleMenuList(roleMenuQuery); }
/// <summary> /// 获取指定角色拥有权限的菜单ID /// </summary> /// <param name="query"></param> /// <returns></returns> public IDictionary<long, long> GetRoleMenuDict(RoleMenuQuery query) { return RoleMenuBusProvider.GetRoleMenuDict(query); }
public IDictionary<long, long> GetTreeNodeListHaveRight(RoleMenuQuery queryRoleMenu) { IDictionary<long, long> dictHaveRightMenu = new Dictionary<long, long>(); IRoleMenuService menuRoleService = ServiceContainer.Instance.Container.Resolve<IRoleMenuService>(); dictHaveRightMenu = menuRoleService.GetRoleMenuDict(queryRoleMenu); return dictHaveRightMenu; }
/// <summary> /// 获取菜单列表,带有权限标示 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<TreeModel> GetHaveRightMenuAjaxByRole(RoleMenuQuery queryRoleMenu) { HttpClientHelper clientHelper = new HttpClientHelper(); // 给指定的作者设置了例外的菜单 IDictionary<long, string> dictExceptionRightMenu = new Dictionary<long, string>(); if (queryRoleMenu.AuthorID != null) { AuthorMenuRightExceptionEntity authorExecEntity = new AuthorMenuRightExceptionEntity(); authorExecEntity.AuthorID = queryRoleMenu.AuthorID.Value; authorExecEntity.JournalID = queryRoleMenu.JournalID; dictExceptionRightMenu = clientHelper.PostAuth<IDictionary<long, string>, AuthorMenuRightExceptionEntity>(GetAPIUrl(APIConstant.SYSGETAUTHOREXCEPTIONRIGHTMENU), authorExecEntity); } IList<MenuEntity> listHaveRightMenuList = clientHelper.Post<IList<MenuEntity>, RoleMenuQuery>(GetAPIUrl(APIConstant.SYSGETHAVERIGHTMENULIST), queryRoleMenu); IList<TreeModel> listResult = new List<TreeModel>(); if (listHaveRightMenuList != null) { IList<MenuEntity> listRoot = listHaveRightMenuList.Where(item => item.PMenuID == 0).ToList<MenuEntity>(); TreeModel treeNode = null; foreach (MenuEntity item in listRoot) { treeNode = new TreeModel(); treeNode.key = item.MenuID.ToString(); treeNode.text = item.MenuName; treeNode.url = SiteConfig.RootPath + item.MenuUrl; treeNode.icon = SiteConfig.RootPath + item.IconUrl; treeNode.isexpand = queryRoleMenu.IsExpend; treeNode.ischecked = dictExceptionRightMenu.ContainsKey(item.MenuID) ? false : true; IList<MenuEntity> listChild = listHaveRightMenuList.Where(p => p.PMenuID == item.MenuID).ToList<MenuEntity>(); if (listChild != null) { // 二级 foreach (MenuEntity itemChild in listChild) { TreeModel treeChildNode = new TreeModel(); treeChildNode.key = itemChild.MenuID.ToString(); treeChildNode.text = itemChild.MenuName; treeChildNode.url = SiteConfig.RootPath + itemChild.MenuUrl; treeChildNode.icon = SiteConfig.RootPath + itemChild.IconUrl; treeChildNode.isexpand = queryRoleMenu.IsExpend; treeChildNode.ischecked = dictExceptionRightMenu.ContainsKey(itemChild.MenuID) ? false : true; treeNode.children.Add(treeChildNode); // 三级 IList<MenuEntity> lastListChild = listHaveRightMenuList.Where(p => p.PMenuID == itemChild.MenuID).ToList<MenuEntity>(); foreach (MenuEntity lastChild in lastListChild) { TreeModel treeLastNode = new TreeModel(); treeLastNode.key = lastChild.MenuID.ToString(); treeLastNode.text = lastChild.MenuName; treeLastNode.url = SiteConfig.RootPath + lastChild.MenuUrl; treeLastNode.icon = SiteConfig.RootPath + lastChild.IconUrl; treeLastNode.isexpand = queryRoleMenu.IsExpend; treeLastNode.ischecked = dictExceptionRightMenu.ContainsKey(lastChild.MenuID) ? false : true; treeChildNode.children.Add(treeLastNode); } } } listResult.Add(treeNode); } } return listResult; }
/// <summary> /// 是否有权限访问当前地址,根据分组判断 /// 如果该地址出现在menu表中了,则进行判断,如果没有则不判断 /// </summary> /// <param name="RoleIDList"></param> /// <param name="url"></param> /// <returns></returns> public bool IsHaveAccessRightByGroup(RoleMenuQuery query) { return RoleMenuDataAccess.Instance.IsHaveAccessRightByGroup(query); }
/// <summary> /// 将查询实体转换为Order语句 /// <param name="query">查询实体</param> /// <returns>获取Order语句,不包含Order</returns> /// </summary> public string RoleMenuQueryToSQLOrder(RoleMenuQuery query) { return " MapID DESC"; }
/// <summary> /// 是否有权限访问当前地址 /// 如果该地址出现在menu表中了,则进行判断,如果没有则不判断 /// </summary> /// <param name="RoleIDList"></param> /// <param name="url"></param> /// <returns></returns> public bool IsHaveAccessRightByGroup(RoleMenuQuery query) { bool flag = false; string sql = @" SELECT TOP 1 m.MenuID,m.GroupID FROM dbo.Menu m WITH(NOLOCK) WHERE m.JournalID=@JournalID AND m.MenuUrl=@MenuUrl"; DbCommand cmd = db.GetSqlStringCommand(sql); db.AddInParameter(cmd, "@MenuUrl", DbType.String, query.Url); db.AddInParameter(cmd, "@JournalID", DbType.Int64, query.JournalID); IDataReader dr = db.ExecuteReader(cmd); if (dr.Read()) { if (WKT.Common.Utils.TypeParse.ToInt16(dr["GroupID"], 0) == query.GroupID.Value) { flag = true; } dr.Close(); } else { flag = true; } return flag; }
/// <summary> /// 是否有权限访问当前地址 /// 如果该地址出现在menu表中了,则进行判断,如果没有则不判断 /// </summary> /// <param name="RoleIDList"></param> /// <param name="url"></param> /// <returns></returns> public bool IsHaveAccessRight(RoleMenuQuery query) { bool flag = false; string sql = @" DECLARE @MenuID BIGINT,@IsHaveRight TINYINT SET @IsHaveRight = 0 SELECT TOP 1 @MenuID=m.MenuID FROM dbo.Menu m WITH(NOLOCK) WHERE m.JournalID=@JournalID AND m.MenuUrl=@MenuUrl IF @MenuID IS NULL BEGIN SET @IsHaveRight = 1 END BEGIN SET @MenuID = NULL SELECT TOP 1 @MenuID=m.MenuID FROM dbo.RoleMenu r WITH(NOLOCK),dbo.Menu m WITH(NOLOCK) WHERE r.JournalID=@JournalID AND r.MenuID=m.MenuID AND r.RoleID {0} AND m.MenuUrl=@MenuUrl IF @MenuID IS NOT NULL BEGIN SET @IsHaveRight=1 END END SELECT @IsHaveRight AS IsHaveRight"; StringBuilder sqlCommandText = new StringBuilder(); if (query.RoleID != null) { sqlCommandText.AppendFormat(sql, "= " + query.RoleID); } else if (query.RoleIDList != null && query.RoleIDList.Count > 0) { if (query.RoleIDList.Count == 1) { sqlCommandText.AppendFormat(sql, "= " + query.RoleIDList[0]); } else { sqlCommandText.AppendFormat(sql, " IN (" + string.Join(",", query.RoleIDList) + ")"); } } else { sqlCommandText.AppendFormat(sql, " = 0"); } DbCommand cmd = db.GetSqlStringCommand(sqlCommandText.ToString()); db.AddInParameter(cmd, "@MenuUrl", DbType.String, query.Url); db.AddInParameter(cmd, "@JournalID", DbType.Int64, query.JournalID); object returnVal = db.ExecuteScalar(cmd); if (returnVal != null) { if (WKT.Common.Utils.TypeParse.ToInt16(returnVal,0) == 1) { flag = true; } } return flag; }
/// <summary> /// 查询 /// </summary> /// <param name="query"></param> /// <returns></returns> public List<RoleMenuEntity> GetRoleMenuList(RoleMenuQuery query) { List<RoleMenuEntity> list = new List<RoleMenuEntity>(); StringBuilder sqlCommandText = new StringBuilder(); sqlCommandText.Append("SELECT MapID,JournalID,RoleID,MenuID,AddDate FROM dbo.RoleMenu WITH(NOLOCK)"); string whereSQL = RoleMenuQueryToSQLWhere(query); string orderBy = RoleMenuQueryToSQLOrder(query); if (!string.IsNullOrEmpty(whereSQL)) sqlCommandText.Append(" WHERE " + whereSQL); if (!string.IsNullOrEmpty(orderBy)) sqlCommandText.Append(" ORDER BY " + orderBy); DbCommand cmd = db.GetSqlStringCommand(sqlCommandText.ToString()); using (IDataReader dr = db.ExecuteReader(cmd)) { list = MakeRoleMenuList(dr); } return list; }
/// <summary> /// 获取指定角色拥有的菜单 /// </summary> /// <param name="query"></param> /// <returns></returns> public IDictionary<long, long> GetRoleMenuDict(RoleMenuQuery query) { IDictionary<long, long> dictRoleMap = new Dictionary<long, long>(); StringBuilder sqlCommandText = new StringBuilder(); sqlCommandText.Append("SELECT MapID,JournalID,RoleID,MenuID,AddDate FROM dbo.RoleMenu WITH(NOLOCK)"); string whereSQL = RoleMenuQueryToSQLWhere(query); string orderBy = RoleMenuQueryToSQLOrder(query); if (!string.IsNullOrEmpty(whereSQL)) sqlCommandText.Append(" WHERE " + whereSQL); if (!string.IsNullOrEmpty(orderBy)) sqlCommandText.Append(" ORDER BY " + orderBy); DbCommand cmd = db.GetSqlStringCommand(sqlCommandText.ToString()); long MenuID = 0; long RoleID = 0; int MenuIDIndex = 0; int RoleIDIndex = 0; using (IDataReader dr = db.ExecuteReader(cmd)) { MenuIDIndex = dr.GetOrdinal("MenuID"); RoleIDIndex = dr.GetOrdinal("RoleID"); while (dr.Read()) { MenuID = WKT.Common.Utils.TypeParse.ToLong(dr[MenuIDIndex], 0); RoleID = WKT.Common.Utils.TypeParse.ToLong(dr[RoleIDIndex], 0); if (!dictRoleMap.ContainsKey(MenuID)) { dictRoleMap.Add(MenuID, RoleID); } } dr.Close(); } return dictRoleMap; }
/// <summary> /// 获取指定角色拥有权限的菜单ID /// </summary> /// <param name="query"></param> /// <returns></returns> public IDictionary<long, long> GetRoleMenuDict(RoleMenuQuery query) { return RoleMenuDataAccess.Instance.GetRoleMenuDict(query); }
/// <summary> /// 将查询实体转换为Where语句 /// <param name="query">查询实体</param> /// <returns>获取Where语句,不包含Where</returns> /// </summary> public string RoleMenuQueryToSQLWhere(RoleMenuQuery query) { StringBuilder sbWhere = new StringBuilder(" JournalID = " + query.JournalID); if (query.RoleID != null) { sbWhere.Append(" AND RoleID = ").Append(query.RoleID.Value); } if (query.RoleIDList != null) { if (query.RoleIDList.Count > 0) { if (query.RoleIDList.Count == 1) { sbWhere.Append(" AND RoleID = ").Append(query.RoleIDList[0]); } else { sbWhere.Append(" AND RoleID IN (").Append(string.Join(",", query.RoleIDList)).Append(")"); } } } return sbWhere.ToString(); }
/// <summary> /// 获取所有符合查询条件的数据 /// </summary> /// <param name="roleMenuQuery">RoleMenuQuery查询实体对象</param> /// <returns>List<RoleMenuEntity></returns> public List<RoleMenuEntity> GetRoleMenuList(RoleMenuQuery roleMenuQuery) { return RoleMenuDataAccess.Instance.GetRoleMenuList(roleMenuQuery); }
/// <summary> /// 获取指定角色拥有的菜单 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<MenuEntity> GetHaveRightMenuList(RoleMenuQuery query) { string sql = "SELECT DISTINCT m.MenuID,m.MenuName,m.MenuUrl,m.PMenuID,m.IconUrl,m.SortID,m.IsContentMenu FROM dbo.RoleMenu r WITH(NOLOCK),dbo.Menu m WITH(NOLOCK) WHERE m.JournalID=@JournalID AND m.GroupID=@GroupID AND m.JournalID=r.JournalID AND r.RoleID {0} AND r.MenuID=m.MenuID AND m.Status=1 ORDER BY m.SortID ASC,m.MenuID ASC"; StringBuilder sqlCommandText = new StringBuilder(); if (query.GroupID == (Byte)EnumMemberGroup.Editor) { if (query.RoleID != null) { sqlCommandText.AppendFormat(sql, "= " + query.RoleID); } else if (query.RoleIDList != null && query.RoleIDList.Count > 0) { if (query.RoleIDList.Count == 1) { sqlCommandText.AppendFormat(sql, "= " + query.RoleIDList[0]); } else { sqlCommandText.AppendFormat(sql, " IN (" + string.Join(",", query.RoleIDList) + ")"); } } else { sqlCommandText.AppendFormat(sql, " = 0"); } } else { sqlCommandText = new StringBuilder("SELECT m.MenuID,m.MenuName,m.MenuUrl,m.PMenuID,m.IconUrl,m.SortID,m.IsContentMenu FROM dbo.Menu m WITH(NOLOCK) WHERE m.JournalID=@JournalID AND m.GroupID=@GroupID AND m.Status=1 ORDER BY m.SortID ASC,m.MenuID ASC"); } DbCommand cmd = db.GetSqlStringCommand(sqlCommandText.ToString()); db.AddInParameter(cmd,"@JournalID",DbType.Int64,query.JournalID); db.AddInParameter(cmd, "@GroupID", DbType.Byte, query.GroupID); IList<MenuEntity> menuList = new List<MenuEntity>(); using (IDataReader dr = db.ExecuteReader(cmd)) { MenuEntity entity = null; while (dr.Read()) { entity = new MenuEntity(); entity.MenuID = WKT.Common.Utils.TypeParse.ToLong(dr["MenuID"], 0); entity.PMenuID = WKT.Common.Utils.TypeParse.ToInt(dr["PMenuID"], 0); entity.MenuName = dr["MenuName"].ToString(); entity.MenuUrl = dr["MenuUrl"].ToString(); entity.IconUrl = dr["IconUrl"].ToString(); entity.IsContentMenu = WKT.Common.Utils.TypeParse.ToBool(dr["IsContentMenu"], false); menuList.Add(entity); } dr.Close(); } return menuList; }
/// <summary> /// 获取菜单列表,带有权限标示 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<TreeModel> GetHaveRightMenu(RoleMenuQuery queryRoleMenu) { if (queryRoleMenu.GroupID == 2) { MenuQuery query = new MenuQuery(); query.JournalID = queryRoleMenu.JournalID; query.GroupID = 2; query.Status = 1; return GetTreeNodeList(query); } # region 找到内容菜单,添加栏目列表 Func<IList<TreeModel>> funcGetSiteChanneNodes = () => { IList<TreeModel> channelTreeList = new List<TreeModel>(); SiteChannelQuery channelQuery = new SiteChannelQuery(); channelQuery.JournalID = queryRoleMenu.JournalID; channelQuery.Status = 1; SiteConfigFacadeAPIService siteConfigAPIService = new SiteConfigFacadeAPIService(); channelTreeList = siteConfigAPIService.GetSiteChannelTreeList(channelQuery,true); TreeModel root = channelTreeList.Single(p => p.Id == 0); return root.children; }; # endregion IList<TreeModel> listResult = new List<TreeModel>(); HttpClientHelper clientHelper = new HttpClientHelper(); // 给指定的作者设置了例外的菜单 IDictionary<long, string> dictExceptionRightMenu = new Dictionary<long, string>(); if (queryRoleMenu.AuthorID != null) { AuthorMenuRightExceptionEntity authorExecEntity = new AuthorMenuRightExceptionEntity(); authorExecEntity.AuthorID = queryRoleMenu.AuthorID.Value; authorExecEntity.JournalID = queryRoleMenu.JournalID; dictExceptionRightMenu = clientHelper.PostAuth<IDictionary<long, string>, AuthorMenuRightExceptionEntity>(GetAPIUrl(APIConstant.SYSGETAUTHOREXCEPTIONRIGHTMENU), authorExecEntity); } IList<MenuEntity> listHaveRightMenuList = clientHelper.Post<IList<MenuEntity>, RoleMenuQuery>(GetAPIUrl(APIConstant.SYSGETHAVERIGHTMENULIST), queryRoleMenu); if (listHaveRightMenuList != null) { IList<MenuEntity> listRoot = listHaveRightMenuList.Where(item => item.PMenuID == 0).ToList<MenuEntity>(); TreeModel treeNode = null; foreach (MenuEntity item in listRoot) { if (!dictExceptionRightMenu.ContainsKey(item.MenuID)) { bool first = true; treeNode = new TreeModel(); treeNode.key = item.MenuID.ToString(); treeNode.text = item.MenuName; treeNode.url = SiteConfig.RootPath + item.MenuUrl; treeNode.icon = SiteConfig.RootPath + item.IconUrl; treeNode.isexpand = queryRoleMenu.IsExpend; IList<MenuEntity> listChild = listHaveRightMenuList.Where(p => p.PMenuID == item.MenuID).ToList<MenuEntity>(); if (listChild != null) { treeNode.isexpand = (first != queryRoleMenu.IsExpend) && first ? first : queryRoleMenu.IsExpend; // 二级 foreach (MenuEntity itemChild in listChild) { if (!dictExceptionRightMenu.ContainsKey(itemChild.MenuID)) { TreeModel treeChildNode = new TreeModel(); treeChildNode.key = itemChild.MenuID.ToString(); treeChildNode.text = itemChild.MenuName; treeChildNode.url = SiteConfig.RootPath + itemChild.MenuUrl; treeChildNode.icon = SiteConfig.RootPath + itemChild.IconUrl; treeChildNode.isexpand = queryRoleMenu.IsExpend; // 如果是网站内容管理节点,则载入站点栏目设置 if (itemChild.IsContentMenu) { treeChildNode.children = funcGetSiteChanneNodes(); treeNode.children.Add(treeChildNode); } else { treeNode.children.Add(treeChildNode); // 三级 IList<MenuEntity> lastListChild = listHaveRightMenuList.Where(p => p.PMenuID == itemChild.MenuID).ToList<MenuEntity>(); foreach (MenuEntity lastChild in lastListChild) { if (!dictExceptionRightMenu.ContainsKey(lastChild.MenuID)) { TreeModel treeLastNode = new TreeModel(); treeLastNode.key = lastChild.MenuID.ToString(); treeLastNode.text = lastChild.MenuName; treeLastNode.url = SiteConfig.RootPath + lastChild.MenuUrl; treeLastNode.icon = SiteConfig.RootPath + lastChild.IconUrl; treeLastNode.isexpand = queryRoleMenu.IsExpend; treeChildNode.children.Add(treeLastNode); } } } } } first = false; } listResult.Add(treeNode); } } } return listResult; }
/// <summary> /// 是否有权限访问当前地址,根据分组判断 /// 如果该地址出现在menu表中了,则进行判断,如果没有则不判断 /// </summary> /// <param name="RoleIDList"></param> /// <param name="url"></param> /// <returns></returns> public bool IsHaveAccessRightByGroup(RoleMenuQuery query) { return RoleMenuBusProvider.IsHaveAccessRightByGroup(query); }
public IList<MenuEntity> GetHaveRightMenu(RoleMenuQuery queryRoleMenu) { IList<MenuEntity> listAllMenu = null; IRoleMenuService menuService = ServiceContainer.Instance.Container.Resolve<IRoleMenuService>(); listAllMenu = menuService.GetHaveRightMenuList(queryRoleMenu); return listAllMenu; }
/// <summary> /// 获取指定角色拥有的菜单 /// </summary> /// <param name="query"></param> /// <returns></returns> public IList<MenuEntity> GetHaveRightMenuList(RoleMenuQuery query) { return RoleMenuBusProvider.GetHaveRightMenuList(query); }
public bool IsHaveMenuRight(RoleMenuQuery queryRoleMenu) { bool flag = false; IRoleMenuService menuService = ServiceContainer.Instance.Container.Resolve<IRoleMenuService>(); flag = menuService.IsHaveAccessRight(queryRoleMenu); return flag; }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { if (TicketTool.IsLogin()) { CurAuthor = JsonConvert.DeserializeObject<AuthorInfoEntity>(TicketTool.GetUserData()); if (CurAuthor == null) { filterContext.HttpContext.Response.Redirect(SiteConfig.RootPath + "/user/login/", true); } else { string cururl = filterContext.HttpContext.Request.Path.ToLower(); if (!cururl.EndsWith("/")) { cururl = cururl + "/"; } if (CurAuthor.GroupID == (byte)EnumMemberGroup.Editor) { # region check is have access cur url right RoleMenuQuery roleQuery = new RoleMenuQuery(); roleQuery.RoleIDList = CurAuthor.RoleIDList; roleQuery.Url = cururl; roleQuery.JournalID = JournalID; if (!systemFacadeService.IsHaveAccessRight(roleQuery)) { filterContext.HttpContext.Response.Redirect("/?url=" + filterContext.HttpContext.Server.UrlEncode("/home/noright"), true); } # endregion ViewBag.SiteTitle = "稿件管理平台"; } else if (CurAuthor.GroupID == (byte)EnumMemberGroup.Expert || CurAuthor.GroupID == (byte)EnumMemberGroup.EnExpert) { # region check is have access cur url right RoleMenuQuery roleQuery = new RoleMenuQuery(); roleQuery.GroupID = CurAuthor.GroupID; roleQuery.Url = cururl; roleQuery.JournalID = JournalID; if (!systemFacadeService.IsHaveAccessRightByGroup(roleQuery)) { filterContext.HttpContext.Response.Redirect("/?url=" + filterContext.HttpContext.Server.UrlEncode("/home/noright"), true); } # endregion ViewBag.SiteTitle = "稿件专家处理平台"; }