コード例 #1
0
        private static SnAccessControlList CreateFromAccessControlList(AccessControlList acl)
        {
            var node    = Node.LoadNode(acl.EntityId);
            var creator = node.CreatedBy;
            var lasMod  = node.ModifiedBy;
            var result  = new SnAccessControlList
            {
                NodeId       = node.Id,
                Creator      = SnIdentity.Create(node.CreatedById),
                LastModifier = SnIdentity.Create(node.ModifiedById),
                Inherits     = acl.Inherits,
                Path         = node.Path,
                Entries      = acl.Entries.Select(e => new SnAccessControlEntry
                {
                    Identity    = SnIdentity.Create(e.IdentityId),
                    Propagates  = !e.LocalOnly,
                    Permissions = e.Permissions.Select(p => new SnPermission
                    {
                        Name      = p.Name,
                        Allow     = p.Allow,
                        AllowFrom = p.AllowFrom == 0 ? null : NodeHead.Get(p.AllowFrom).Path,
                        Deny      = p.Deny,
                        DenyFrom  = p.DenyFrom == 0 ? null : NodeHead.Get(p.DenyFrom).Path
                    }).ToArray()
                }).ToArray()
            };

            return(result);
        }
コード例 #2
0
        public static SnAccessControlEntry CreateEmpty(int principalId, bool propagates)
        {
            var perms = new List <SnPermission>();

            foreach (var permType in PermissionType.PermissionTypes)
            {
                perms.Add(new SnPermission {
                    Name = permType.Name
                });
            }
            return(new SnAccessControlEntry {
                Identity = SnIdentity.Create(principalId), Permissions = perms, Propagates = propagates
            });
        }