Пример #1
0
        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;
        }
Пример #2
0
        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++;

                        }
                    }
                }
            }
        }
Пример #3
0
 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;
     }
 }
Пример #4
0
        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;
            }
        }
Пример #5
0
 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;
     }
 }