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()); }
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); }
// ====================================================== 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)); }