コード例 #1
0
ファイル: ObjSecurity.cs プロジェクト: newbienewbie/scada-v6
        /// <summary>
        /// Enumerates parent role IDs recursively.
        /// </summary>
        private IEnumerable <int> EnumerateParentRoleIDs(TableIndex roleRef_childRoleIndex, int childRoleID,
                                                         HashSet <int> protectionSet = null)
        {
            if (protectionSet == null)
            {
                protectionSet = new HashSet <int> {
                    childRoleID
                }
            }
            ;

            foreach (int parentRoleID in roleRef_childRoleIndex.SelectItems(childRoleID))
            {
                if (protectionSet.Add(parentRoleID))
                {
                    yield return(parentRoleID);

                    foreach (int grandparentRoleID in
                             EnumerateParentRoleIDs(roleRef_childRoleIndex, parentRoleID, protectionSet))
                    {
                        yield return(grandparentRoleID);
                    }
                }
            }
        }
コード例 #2
0
ファイル: ObjSecurity.cs プロジェクト: newbienewbie/scada-v6
        /// <summary>
        /// Add rights for the specified role.
        /// </summary>
        private void AddRoleRights(TableIndex objRight_roleIndex, TableIndex obj_parentObjIndex,
                                   RightsByObj rightsByObj, int roleID)
        {
            // explicitly defined rights have higher priority
            foreach (ObjRight objRight in objRight_roleIndex.SelectItems(roleID))
            {
                AddObjRights(rightsByObj, objRight.ObjNum, new EntityRights(objRight));
            }

            // add rights on child objects
            foreach (ObjRight objRight in objRight_roleIndex.SelectItems(roleID))
            {
                EntityRights entityRights = new EntityRights(objRight);

                foreach (Obj childObj in EnumerateChildObjects(obj_parentObjIndex, objRight.ObjNum))
                {
                    AddObjRights(rightsByObj, childObj.ObjNum, entityRights);
                }
            }
        }
コード例 #3
0
ファイル: ObjSecurity.cs プロジェクト: newbienewbie/scada-v6
        /// <summary>
        /// Enumerates child objects recursively.
        /// </summary>
        private IEnumerable <Obj> EnumerateChildObjects(TableIndex obj_parentObjIndex, int parentObjNum,
                                                        HashSet <int> protectionSet = null)
        {
            if (protectionSet == null)
            {
                protectionSet = new HashSet <int> {
                    parentObjNum
                }
            }
            ;

            foreach (Obj childObj in obj_parentObjIndex.SelectItems(parentObjNum))
            {
                if (protectionSet.Add(childObj.ObjNum))
                {
                    yield return(childObj);

                    foreach (Obj grandchildObj in EnumerateChildObjects(obj_parentObjIndex, childObj.ObjNum))
                    {
                        yield return(grandchildObj);
                    }
                }
            }
        }