2011-02-08 3 views
2

나는 그룹을 추가하는 SharePoint 목록sharepoint 2010의 목록 사용 권한에서 그룹을 프로그래밍 방식으로 추가 및 제거하는 방법은 무엇입니까?

SPGroup Contribute = web.SiteGroups["Staff"]; 
SPRoleDefinition ContributeDefinition = web.RoleDefinitions["Read"]; 
SPRoleAssignment ContributeRoleAssignment = new SPRoleAssignment(Contribute); 
ContributeRoleAssignment.RoleDefinitionBindings.Add(ContributeDefinition); 
list.RoleAssignments.Add(ContributeRoleAssignment); 

에 권한 수준에 그룹을 추가하려면 다음 코드를 가지고,하지만 난이 그룹 목록에 권한을 취소하려면 어떻게 그것을 할 것 ? 당신이 모든 역할 assgnment을 제거해야하는 경우 사전에

덕분에

답변

6

당신은 할 수 있습니다 : 당신은 바인딩 몇 가지 정의를 취소해야하는 경우

SPUser user = ...; 
list.RoleAssignments.Remove(user); 

당신은 할 수 있습니다 :

SPUser user = ...; 
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..); 

하는 경우 당신이 원하지 않으시면, 더 자세히 설명해주십시오.

업데이트 : 다음은 테스트 한 샘플 코드이며 작동합니다. Contribute 역할을 제거하고 읽기 역할을 대상 그룹에 추가합니다. 영어가 아닌 Sharepoint 버전이 있으므로 역할 이름을 확인하십시오.

static void Main(string[] args) 
{ 
    using (SPSite site = new SPSite("site_url")) 
    { 
    using (SPWeb web = site.OpenWeb()) 
    { 
     SPList list = web.GetList(web.Url + "/" + "list_url"); 
     SPGroup group = web.SiteGroups["target_group_name"]; 
     SPRoleDefinition contributeDef = web.RoleDefinitions["Contribute"]; 
     SPRoleDefinition readDef = web.RoleDefinitions["Read"]; 
     SPRoleAssignment contributeRole = new SPRoleAssignment(group); 
     contributeRole.RoleDefinitionBindings.Add(contributeDef); 
     if (!list.HasUniqueRoleAssignments) // required to make role change 
     list.BreakRoleInheritance(true); 
     var assignmentForGroup = list.RoleAssignments.GetAssignmentByPrincipal(group); 
     assignmentForGroup.RoleDefinitionBindings.Remove(contributeDef); 
     assignmentForGroup.RoleDefinitionBindings.Add(readDef); 
     assignmentForGroup.Update(); 
    } 
    } 
} 
+0

직원 그룹에 목록에 대한 참여 권한이 있다고 가정 해 봅시다. 대신 읽기 권한이 있어야합니다. 내가 게시 한 코드를 사용하여 읽음을 줄 수는 있지만 처음에는 Contribute를 취소해야합니다. – Nick

+0

작업 예제로 질문을 업데이트했습니다. – EvgK

관련 문제