private void SecureFile(SecureObjectCreator secureObject) { ListItem item; if (secureObject.SecurableObject != null) { item = (ListItem)secureObject.SecurableObject; } else { var folder = _ctx.Web.GetFolderByServerRelativeUrl(secureObject.Url); var file = folder.Files.GetByUrl(secureObject.Title); _ctx.Load(file, f => f.ListItemAllFields); _ctx.ExecuteQueryRetry(); item = file.ListItemAllFields; } SetInheritance(item, secureObject); item.Update(); _ctx.Load(item, i => i.RoleAssignments); _ctx.ExecuteQueryRetry(); ApplyRoleAssignments(item, secureObject); item.Update(); _ctx.ExecuteQueryRetry(); }
private void SetInheritance(SecurableObject objectToSecure, SecureObjectCreator definition) { if (definition.BreakInheritance) { objectToSecure.BreakRoleInheritance(definition.CopyExisting, definition.ResetChildPermissions); } }
private void SecureWeb(SecureObjectCreator secureObject) { var webToSecure = _ctx.Site.OpenWeb(secureObject.Url); SetInheritance(webToSecure, secureObject); webToSecure.Update(); _ctx.Load(webToSecure, i => i.RoleAssignments); _ctx.ExecuteQueryRetry(); ApplyRoleAssignments(webToSecure, secureObject); webToSecure.Update(); _ctx.ExecuteQueryRetry(); }
private void ApplyRoleAssignments(SecurableObject objectToSecure, SecureObjectCreator definition) { foreach (var key in definition.GroupRoleDefinitions.Keys) { Principal principal = null; if (key.StartsWith("c:")) { principal = _ctx.Web.EnsureUser(key); } else { if (key != "AssociatedMemberGroup" && key != "AssociatedOwnerGroup" && key != "AssociatedVisitorGroup") { principal = _ctx.Web.SiteGroups.GetByName(key); } else { _ctx.Load(_ctx.Web.AssociatedMemberGroup, g => g.Id); _ctx.Load(_ctx.Web.AssociatedOwnerGroup, g => g.Id); _ctx.Load(_ctx.Web.AssociatedVisitorGroup, g => g.Id); _ctx.ExecuteQueryRetry(); switch (key) { case "AssociatedMemberGroup": principal = _ctx.Web.AssociatedMemberGroup; break; case "AssociatedOwnerGroup": principal = _ctx.Web.AssociatedOwnerGroup; break; case "AssociatedVisitorGroup": principal = _ctx.Web.AssociatedVisitorGroup; break; } } } var roleDef = _ctx.Web.RoleDefinitions.GetByName(definition.GroupRoleDefinitions[key]); var roleDefinitionBinding = new RoleDefinitionBindingCollection(_ctx) { roleDef }; objectToSecure.RoleAssignments.Add(principal, roleDefinitionBinding); } }
private void SecureList(SecureObjectCreator secureObject) { List list; if (secureObject.SecurableObject != null) { list = (List)secureObject.SecurableObject; } else { list = _ctx.Web.Lists.GetByTitle(secureObject.Title); } SetInheritance(list, secureObject); list.Update(); _ctx.Load(list, i => i.RoleAssignments); _ctx.ExecuteQueryRetry(); ApplyRoleAssignments(list, secureObject); list.Update(); _ctx.ExecuteQueryRetry(); }