2017-09-29 5 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();