Exemple #1
0
        /// <summary>
        /// Enumerates parent role IDs recursively.
        /// </summary>
        protected IEnumerable <int> EnumerateParentRoleIDs(ITableIndex 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);
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Add rights for the specified role.
        /// </summary>
        protected void AddRoleRight(ITableIndex objRight_roleIndex, ITableIndex obj_parentObjIndex,
                                    RightByObj rightByObj, int roleID)
        {
            // explicitly defined rights have higher priority
            foreach (ObjRight objRight in objRight_roleIndex.SelectItems(roleID))
            {
                AddObjRight(rightByObj, objRight.ObjNum, new Right(objRight));
            }

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

                foreach (Obj childObj in EnumerateChildObjects(obj_parentObjIndex, objRight.ObjNum))
                {
                    AddObjRight(rightByObj, childObj.ObjNum, right);
                }
            }
        }
Exemple #3
0
 /// <summary>
 /// Adds the child objects of the specified object recursively.
 /// </summary>
 private void AddChildObjects(ITableIndex parentObjIndex, UserRights userRights,
                              int parentObjNum, int parentLevel)
 {
     foreach (Obj childObj in parentObjIndex.SelectItems(parentObjNum))
     {
         if (userRights.GetRightByObj(childObj.ObjNum).View)
         {
             Add(new ObjectItem(childObj, parentLevel + 1));
             AddChildObjects(parentObjIndex, userRights, childObj.ObjNum, parentLevel + 1);
         }
     }
 }
Exemple #4
0
        /// <summary>
        /// Enumerates child objects recursively.
        /// </summary>
        protected IEnumerable <Obj> EnumerateChildObjects(ITableIndex 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);
                    }
                }
            }
        }