public static bool IsUserHaveNodeInThisFuntion(int RootID, Webpages_VUser vuser) { int[] ThisNodeGroupCodes = GetThisNodeAllViewRoles(RootID); if (CheckThoseVuserContainThisGroup(ThisNodeGroupCodes, vuser)) return true; MenuTree[] trees = GetOneFloorByRootID(RootID); if (trees != null && trees.Length > 0) { foreach (MenuTree tree in trees) { int[] Roles = GetThisNodeVuserIdList(tree.MenuId); if (CheckThoseVuserContainThisGroup(Roles, vuser)) return true; //不能不管真假就return!!!假的时候还要判断其他的兄弟节点呢! if (IsUserHaveNodeInThisFuntion(tree.MenuId, vuser)) return true; } } return false; }
public static void GetUserMenuTree(ref TreeView treeview, string appVirtualPath, Webpages_VUser vuser, int rootID, bool chechBox, bool isAddUrl, bool isShowAllAndSelectOwner) { if (treeview == null) return; if (vuser == null) { GetPublicMenuTree(ref treeview, appVirtualPath, rootID, chechBox, isAddUrl, isShowAllAndSelectOwner); return; } MenuTree[] trees = GetOneFloorByRootID(rootID); using (var db = new WebPagesContext()) { if (trees != null && trees.Length > 0) { treeview.Target = _Target; int i = 0; bool IsAdmin = false;//管理员 Webpages_Roles group = db.WebPagesRoles.FirstOrDefault(o=>o.Code == AdminUserRoleCode); if (group != null) { if (vuser.Type == (int)VUserType.User) { Webpages_UserProfile user = db.UserProfiles.FirstOrDefault(o=>o.UserId == vuser.UserID); //if (user.IsUserInGroup(group)) if(Roles.IsUserInRole(user.UserName,group.RoleName)) { IsAdmin = true; } } else { Webpages_Roles vGroup = db.WebPagesRoles.FirstOrDefault(o => o.Code == vuser.RoleID); if (IsGroupInGroup(vuser.Role.Code, group.Code)) { IsAdmin = true; } } } if (IsAdmin) { foreach (MenuTree tree in trees) { if (!isShowAllAndSelectOwner && tree.IsHidden ) continue; //创建存有必要信息的TReeNode TreeNode node = newTreeNode(tree, appVirtualPath, chechBox, isAddUrl, false); if (isShowAllAndSelectOwner) { //if (!IsParentChecked(node)) node.Checked = true; } treeview.Nodes.Add(node); bool IsThisNodeContainShisUser = true;//管理员拥有所有 AddChildrenToNode(node, null, tree.MenuId, appVirtualPath, ref IsThisNodeContainShisUser, chechBox, isAddUrl, //isShowAllAndSelectOwner && !node.Checked); isShowAllAndSelectOwner, node.Checked); } } else { bool IsThisNodeContainShisUser = false; int[] parentRls = GetThisNodeAllViewRoles(rootID); if (parentRls != null && parentRls.Length > 0) {//判断父节点是否包含 if (CheckThoseVuserContainThisGroup(parentRls, vuser)) { IsThisNodeContainShisUser = true; } } foreach (MenuTree tree in trees) { bool tmpflag = IsThisNodeContainShisUser; if (!isShowAllAndSelectOwner && tree.IsHidden) continue; //string Roles = row["OWNERGROUPCODE"].ToString(); int[] Roles = GetThisNodeAllViewRoles(tree.MenuId); //此节点的角色列表中是不是包含此用户或者角色的标志 if (!tmpflag && Roles != null && Roles.Length > 0) { if (CheckThoseVuserContainThisGroup(Roles, vuser)) { tmpflag = true; } } //创建存有必要信息的TReeNode TreeNode node = newTreeNode(tree, appVirtualPath, chechBox, isAddUrl, false); if (isShowAllAndSelectOwner && tmpflag) { //if (!IsParentChecked(node)) node.Checked = true; } treeview.Nodes.Add(node); AddChildrenToNode(node, vuser.VUserId, tree.MenuId, appVirtualPath, ref tmpflag, chechBox, isAddUrl, //isShowAllAndSelectOwner && !node.Checked); isShowAllAndSelectOwner, node.Checked); if (!tmpflag && !isShowAllAndSelectOwner) { treeview.Nodes[i].ChildNodes.Clear(); treeview.Nodes.RemoveAt(i); } else i++; } } } } }
public static Webpages_VUser CreateOrGetByUserId(int userid) { using (var db = new WebPagesContext()) { var vuser = db.Webpages_VUsers.FirstOrDefault(o => o.UserID == userid); if (vuser != null) return vuser; if (db.UserProfiles.Find(userid) == null) return null; vuser = new Webpages_VUser(); vuser.UserID = userid; vuser.Type = (int)VUserType.User; db.Webpages_VUsers.Add(vuser); db.SaveChanges(); return vuser; } }
public static bool CheckThoseVuserContainThisGroup(int[] vuserIds, Webpages_VUser vuser) { if (vuserIds == null || vuserIds.Length == 0) return false; using (var db = new WebPagesContext()) { if (vuser.Type == (int)VUserType.Group) { foreach (int vuserid in vuserIds) { Webpages_VUser vu = db.Webpages_VUsers.FirstOrDefault(o => o.VUserId == vuserid); if (vu.Type == (int)VUserType.Group) { if (IsGroupInGroup(vuser.Role.Code, vu.Role.Code)) { return true; } } } } else { foreach (int vuserid in vuserIds) { Webpages_VUser vu = db.Webpages_VUsers.FirstOrDefault(o=>o.VUserId ==vuserid); if (vu.Type == (int)VUserType.Group) { var user = vuser.User; //if (user.IsUserInGroup(new ADGroup(vu.GroupId))) if(Roles.IsUserInRole(user.UserName,vu.Role.RoleName)) { return true; } } else if (vu.UserID == vuser.UserID) return true; } } return false; } }
public static Webpages_VUser CreateOrGetByGroupId(string groupCode) { using (var db = new WebPagesContext()) { var vuser = db.Webpages_VUsers.FirstOrDefault(o => o.RoleID == groupCode); if (vuser != null) return vuser; vuser = new Webpages_VUser(); vuser.RoleID = groupCode; vuser.Type = (int)VUserType.Group; db.Webpages_VUsers.Add(vuser); db.SaveChanges(); return vuser; } }