public ObjectTypeTree GetInferiorClasses()
        {
            ObjectTypeTree ret = DirectoryServiceUtils.DefaultPropertySet.ToObjectTypeTree();

            ret.AddNodeRange(InferiorClasses.Select(c => c.ToObjectTypeTree()));
            return(ret);
        }
        public ObjectTypeTree GetExtendedRights()
        {
            ObjectTypeTree ret = SchemaClass.ToObjectTypeTree();

            ret.AddNodeRange(Control.Select(c => c.ToObjectTypeTree()));
            ret.AddNodeRange(ValidatedWrite.Select(c => c.ToObjectTypeTree()));
            return(ret);
        }
예제 #3
0
        /// <summary>
        /// Convert the extended right to an object type tree.
        /// </summary>
        /// <returns>The tree of object types.</returns>
        public ObjectTypeTree ToObjectTypeTree()
        {
            ObjectTypeTree tree = new ObjectTypeTree(RightsId, Name);

            if (IsPropertySet)
            {
                tree.AddNodeRange(PropertySet.Select(p => new ObjectTypeTree(p.SchemaId, p.CommonName)));
            }
            return(tree);
        }
        public ObjectTypeTree GetAttributes()
        {
            ObjectTypeTree ret = SchemaClass.ToObjectTypeTree();

            ret.AddNodeRange(PropertySets.Select(c => c.ToObjectTypeTree()));
            ObjectTypeTree unclass = DirectoryServiceUtils.DefaultPropertySet.ToObjectTypeTree();

            unclass.AddNodeRange(Attributes.Where(a => !a.InPropertySet).Select(a => a.ToObjectTypeTree()));
            ret.AddNode(unclass);
            return(ret);
        }
예제 #5
0
        public ObjectTypeTree GetAttributes(IEnumerable <DsObjectInformation> dynamic_aux_classes)
        {
            ObjectTypeTree ret = SchemaClass.ToObjectTypeTree();

            var prop_sets = dynamic_aux_classes.SelectMany(c => c.PropertySets).Concat(PropertySets).Distinct(new ExtendedRightsComparer());

            ret.AddNodeRange(prop_sets.Select(c => c.ToObjectTypeTree()));
            ObjectTypeTree unclass = DirectoryServiceUtils.DefaultPropertySet.ToObjectTypeTree();
            var            attrs   = dynamic_aux_classes.SelectMany(c => c.Attributes).Concat(Attributes).Distinct(new AttributeComparer());

            unclass.AddNodeRange(attrs.Where(a => !a.InPropertySet).Select(a => a.ToObjectTypeTree()));
            if (unclass.Nodes.Count > 0)
            {
                ret.AddNode(unclass);
            }
            return(ret);
        }
 private AuthZAccessCheckResult[] AccessCheck(AuthZContext context, SecurityDescriptor sd, Sid object_sid, ObjectTypeTree tree)
 {
     if (context.Remote && tree?.Count > kMaxRemoteObjectTypes)
     {
         return(tree.Split(kMaxRemoteObjectTypes).SelectMany(t => AccessCheck(context, sd, object_sid, t)).ToArray());
     }
     return(context.AccessCheck(sd, null, DirectoryServiceAccessRights.MaximumAllowed, object_sid, tree?.ToArray(), sd.NtType));
 }