2016-06-21 1 views
0

공유 그룹에 SPListItem에서 읽기 또는 쓰기 권한이 있는지 확인하는 방법.공유 그룹에 SPListItem에서 읽기 또는 쓰기 권한이 있는지 확인하는 방법

우리는이 코드를 사용하여 SPUser 권한을 확인할 수 있습니다

SPBasePermissions perms = SPBasePermissions.EditListItems; 
spListItem.DoesUserHavePermissions(spUser, perms); 

하지만 난 아무데도 내가 그룹에 대한 권한을 확인하는 방법을 찾을 수 없습니다. 이것은 내가 무엇을 찾고 있습니다 : 그룹에 대한 권한을 검토

spListItem.DoesUserHavePermissions(spGroup, perms); 

답변

1

, 당신이 직접 볼 수 있습니다 SPListItem의 RoleAssignments property (SPRoleAssignment 개체의 컬렉션 인) 및 역할 할당의 Member 속성이 일치하는지 참조 당신이 원하는 그룹.

사용자와 달리 Active Directory 그룹과 SharePoint 그룹 내에 그룹을 중첩 할 수 없으므로 직접 역할 할당보다 더 자세히 볼 필요가 없습니다.

가장 간단한 해결책은 SPRoleAssignmentCollection 개체의 GetAssignmentByPrincipal 메서드를 사용하는 것입니다.

  • 편리한 방식 : 특정 SPBasePermissions enumeration에 권한 수준의 BasePermissions 속성을 비교할 때 위의 코드에서, 나는 Microsoft's Guidelines for FlagsAttribute and Enum에 의해 권장되는 방법을 사용하고 있음을

    bool hasEdit = false; 
    SPRoleAssignment ra = spListItem.RoleAssignments.GetAssignmentByPrincipal(spGroup); 
    SPRoleDefinitionBindingCollection permissions = ra.RoleDefinitionBindings; 
    foreach(SPRoleDefinition level in permissions) 
    { 
        if(level.BasePermissions & SPBasePermissions.EditListItems == SPBasePermissions.EditListItems 
         || level.BasePermissions & SPBasePermissions.FullMask == SPBasePermissions.FullMask) 
        { 
         hasEdit = true; 
         break; 
        } 
    } 
    

    주 플래그가 숫자 값으로 설정되었는지 여부를 테스트하는 것은 숫자 값과 플래그 열거 상수 사이의 비트 AND 연산을 수행하는 것입니다.이 상수는 플래그에 해당하지 않는 숫자 값의 모든 비트를 0으로 설정 한 다음 결과 해당 작업의 플래그 열거 형 같습니다 erated constant.

관련 문제