Ejemplo n.º 1
0
        public static void SetAcl(Node node, SnAccessControlList acl)
        {
            node.Security.Assert(PermissionType.SetPermissions);

            // no need to fire permission changed events here, because Acl apply does that below
            ApplyAclModifications(SecurityHandler.CreateAclEditor(), node.Security.GetAcl(), acl.ConvertToAccessControlList());
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        // ====================================================== STATIC INTERFACE

        public static SnAccessControlList GetAcl(int nodeId)
        {
            var ctx = SecurityHandler.SecurityContext;

            ctx.AssertPermission(nodeId, PermissionType.SeePermissions);
            var acl = ctx.GetAcl(nodeId);

            return(SnAccessControlList.CreateFromAccessControlList(acl));
        }