2016-06-21 16 views
0

共有グループにSPListItemの読み取りまたは書き込みのアクセス許可があるかどうかを確認する方法。共有グループにSPListItemでの読み取りまたは書き込みのアクセス許可があるかどうかを確認する方法

私たちは、このコードを使用してSPUserの権限を確認することができます。

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

しかし、私はグループの許可を確認する必要がありますどのようにどこにも見つけることができませんでした。これは私が探していますものです:

グループの権限をチェックするときに、あなたがSPListItemの RoleAssignments propertySPRoleAssignmentオブジェクトの集合である)を直接見ることができ、任意の役割分担の Memberプロパティが対応するかどうかを確認
spListItem.DoesUserHavePermissions(spGroup, perms); 

答えて

1

あなたが望むグループ。

ユーザーとは異なり、グループはActive DirectoryグループとSharePointグループ内にネストすることはできません。したがって、直接ロールの割り当てよりも深く見る必要はありません。

最も簡単な解決策は、SPRoleAssignmentCollectionオブジェクトのGetAssignmentByPrincipalメソッドを使用することです。

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; 
    } 
} 

特定SPBasePermissions enumerationへのアクセス許可レベルのBasePermissionsプロパティを比較する際に上記のコードでは、私はMicrosoft's Guidelines for FlagsAttribute and Enumによって推奨されるアプローチを使用していていること注:

  • に便利な方法フラグに数値が設定されているかどうかをテストするには、数値とフラグ列挙定数の間でビット単位のAND演算を実行します。この定数は、フラグに対応しない数値のすべてのビットをゼロに設定し、その操作のフラグenumに等しいエラート定数。
関連する問題