2017-09-29 1 views
0

私はSharePointとcsomを初めて使用しています。私はリスト内の既存のグループ/ユーザパーミッションを変更する方法を理解しようとしていますが、誤ってそのリスト内のアイテムパーミッションを変更することはありません。コードは次のとおりです:リスト内のユーザー/グループを削除すると、ユニークなアクセス許可を持つアイテムに影響が及ぶ理由

myList.BreakRoleInheritance(true, true); 

var roletypes = ctx.Web.RoleDefinitions.GetByType(RoleType.Reader); 
ctx.ExecuteQuery(); 
RoleDefinitionBindingCollection colRoleDefinitionBinding = new RoleDefinitionBindingCollection(ctx); 
colRoleDefinitionBinding.Add(roletypes); 

// if user, add him with read access 
if (!item.ContainsKey("group")) 
{ 
    Principal entity = ctx.Web.EnsureUser(item["user"]); 
    myList.RoleAssignments.GetByPrincipal(entity).DeleteObject(); 
    myList.RoleAssignments.Add(entity, colRoleDefinitionBinding); 
} 
else 
{ 
    Group entity = ctx.Web.SiteGroups.GetById(Int32.Parse(item["group"])); 
    myList.RoleAssignments.GetByPrincipal(entity).DeleteObject(); 
    myList.RoleAssignments.Add(entity, colRoleDefinitionBinding); 
} 

ctx.ExecuteQuery(); 

私は本質的にユーザーまたはグループを削除して、新しい権限で再度追加しています。ユーザー/グループを削除するときに、そのユーザーまたはグループがアイテム権限内に存在する場合は、そのユーザーまたはグループも削除されます。私が理解していないのは、ユニークなアクセス権を持っているときにアイテムのパーミッションが改ざんされている理由です。アイテムのアクセス許可に影響を与えずにリストのアクセス許可を変更する別の方法はありますか?

答えて

0

説明しました。権限を変更するには、ImportRoleDefinitionBindingsを使用してください。

Principal entity = ctx.Web.EnsureUser(item["user"]); 
roleAssignment = myList.RoleAssignments.GetByPrincipal(entity); 
roleAssignment.ImportRoleDefinitionBindings(colRoleDefinitionBinding); 
roleAssignment.Update(); 
ctx.ExecuteQuery(); 
関連する問題