public IEnumerable <SPBinding> ResolvePermissions(IDictionary permissions) { var keys = permissions.Keys.Cast <string>().ToArray(); var bindingCol = new SPBindingCollection(); for (int i = 0; i < keys.Length; i++) { var key = keys[i]; var prins = permissions[key]; var role = Convert.ToString(key); string[] allPrins; if (!prins.GetType().IsArray) { bindingCol.Add(new SPBinding(Convert.ToString(prins), role)); } else { allPrins = ((IEnumerable)prins).Cast <string>().ToArray(); for (int p = 0; p < allPrins.Length; p++) { var prin = allPrins[p]; bindingCol.Add(new SPBinding(prin, role)); } } } return(bindingCol); }
public SPFolder AddSubFolder(string folderName, SPBindingCollection bindingCol, bool permissionsApplyRecursively) { var newFolder = (SPFolder)CTX.SP1.Web.Folders.Add(_fol.ServerRelativeUrl + "/" + folderName); newFolder.AddPermission(bindingCol, true, permissionsApplyRecursively); return(newFolder); }
public SPFile UploadFile(string localFilePath, SPBindingCollection bindingCol, bool permissionsApplyRecursively, bool copyRoleAssignments = true, bool forceOverwrite = false, bool refreshFiles = true) { var uploadedFile = UploadFile(localFilePath, forceOverwrite, refreshFiles); uploadedFile.BreakInheritance(copyRoleAssignments, true); uploadedFile.AddPermission(bindingCol, true, permissionsApplyRecursively); return(uploadedFile); }
public void AddPermission(SPBindingCollection bindingCol, bool forceBreak, bool permissionsApplyRecursively) { if (HasUniquePermissions.HasValue && !HasUniquePermissions.Value) { if (!forceBreak) { throw new NoForceBreakException(this.Id); } else { SecObj.BreakRoleInheritance(true, true); } } else if (!HasUniquePermissions.HasValue) { throw new InvalidOperationException("The permissions for object id \"" + Convert.ToString(this.Id) + "\" cannot be modified!"); } var list = new List <RoleAssignment>(bindingCol.Count); for (int i = 0; i < bindingCol.Count; i++) { var binding = bindingCol[i]; var bCol = new RoleDefinitionBindingCollection(CTX.SP1) { binding.Definition }; list.Add(SecObj.RoleAssignments.Add( binding.Principal, bCol)); foreach (var ass in list) { CTX.Lae(ass, false); } Update(); CTX.Lae(); } if (Permissions != null) { for (int ra = 0; ra < list.Count; ra++) { var r = list[ra]; CTX.Lae(r, true, ras => ras.Member.Id, ras => ras.Member.Title); } Permissions.AddRange(this, list); } else { this.GetPermissions(); } //if () }
private void AddPermissionRecursively(List list, SPBindingCollection bindCol) { var query = new CamlQuery() { ViewXml = RECURSE_CAML_QUERY }; var lic = (SPListItemCollection)list.GetItems(query); for (int i = 0; i < lic.Count; i++) { var li = lic[i]; li.AddPermission(bindCol, true, false); } }
public void AddPermission(SPBindingCollection bindingCol, bool forceBreak = false) { // This is the main "AddPermission" method that the other methods call. if (HasUniquePermissions.HasValue && !HasUniquePermissions.Value) { if (!forceBreak) { throw new NoForceBreakException(_web.Id); } else { _web.BreakRoleInheritance(true, true); } } else if (!HasUniquePermissions.HasValue) { throw new InvalidOperationException("This object's permissions cannot be modified!"); } var list = new List <RoleAssignment>(bindingCol.Count); for (int i = 0; i < bindingCol.Count; i++) { var binding = bindingCol[i]; var bCol = new RoleDefinitionBindingCollection(CTX.SP1) { binding.Definition }; list.Add(_web.RoleAssignments.Add( binding.Principal, bCol)); foreach (var ass in list) { CTX.Lae(ass, false); } _web.Update(); CTX.Lae(); } if (Permissions == null) { this.GetPermissions(); } else { Permissions.AddRange(list); } }
private void AddPermissionRecursively(SPBindingCollection bindCol) { var thisType = this.GetType().Name; switch (thisType) { case "SPFolder": AddPermissionRecursively((SPFolder)this, bindCol); break; case "SPFile": AddPermissionRecursively((SPFile)this, bindCol); break; default: throw new InvalidOperationException("What the f**k?"); } }
private void AddPermissionRecursively(SPFolder fol, SPBindingCollection bindCol) => this.AddPermissionRecursively(((Folder)fol.ShowOriginal()).ListItemAllFields.ParentList, bindCol);
private void AddPermissionRecursively(SPFile file, SPBindingCollection bindCol) => this.AddPermissionRecursively(((File)file.ShowOriginal()).ListItemAllFields.ParentList, bindCol);