Stop inherit list item permission

 

SP.Group group = web.SiteGroups.GetByName(siteName + " Owners");
foreach (User user in Users)
{
    group.Users.AddUser(user);
}
group.Update();
context.Load(groupOwner, g => g.Id);
context.ExecuteQuery();
GID = groupOwner.Id.ToString();

var web = item.ParentList.ParentWeb;
var context = web.Context;

item.BreakRoleInheritance(true, false);
item.Update();
context.Load(item, i => i.RoleAssignments);
context.ExecuteQuery();
item.RoleAssignments.Where(c => c.PrincipalId.ToString() != GID).ToList().ForEach(ra => ra.DeleteObject());//empty permission

var collRoleDefinitionBinding = new RoleDefinitionBindingCollection(context);
var contributerDefinition = web.RoleDefinitions.GetByType(RoleType.Contributor); 
collRoleDefinitionBinding.Add(contributerDefinition);
List<FieldUserValue> reviewers = new List<FieldUserValue>();
try
{
    var user = web.EnsureUser(loginName);
    item.RoleAssignments.Add(user, collRoleDefinitionBinding);
    //Add conrribure permission for user
    FieldUserValue userVal = FieldUserValue.FromUser(loginName);
    reviewers.Add(userVal);
}
catch (Exception err)
{
    Error("Add Reviwer Error:", err);
}
if (reviewers.Count > 0)
    item["Reviewer"] = reviewers;
item.Update();
context.ExecuteQuery();

 

posted @ 2018-06-21 14:03  JackHu88  阅读(86)  评论(0编辑  收藏  举报