So far I am able to grant user certain permission with the following code:
ClientContext context = new ClientContext(\"http://myRealURL\");
Principal
The following example demonstrates how to customize access to folder via CSOM. There are two steps:
Example:
Principal user = ctx.Web.EnsureUser(accountName);
var folder = ctx.Web.GetFolderByServerRelativeUrl(folderUrl);
var roleDefinition = ctx.Site.RootWeb.RoleDefinitions.GetByType(RoleType.Reader); //get Reader role
var roleBindings = new RoleDefinitionBindingCollection(ctx) { roleDefinition };
folder.ListItemAllFields.BreakRoleInheritance(true, false); //set folder unique permissions
folder.ListItemAllFields.RoleAssignments.Add(user, roleBindings);
ctx.ExecuteQuery();
, where folderUrl
parameter corresponds to server relative url for a folder,
for example /news/documents/archive
for the following structure:
News (site)
|
Documents (library)
|
Archive (folder)