2016-06-21 19 views
0

Überprüfen, ob eine Sharepoint-Gruppe Lese- oder Schreibrechte in SPListItem hat.Überprüfen, ob eine Sharepoint-Gruppe Lese- oder Schreibrechte in SPListItem hat

Wir überprüfen SPUser Erlaubnis, diesen Code verwenden:

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

Aber ich konnte nicht überall finden, wie soll ich die Erlaubnis für eine Gruppe überprüfen. Dies ist, was ich suche:

spListItem.DoesUserHavePermissions(spGroup, perms); 

Antwort

1

Wenn Berechtigungen für eine Gruppe überprüfen, können Sie direkt buchen, die SPListItem der RoleAssignments property (das ist eine Sammlung von SPRoleAssignment Objekte) und sehen, ob Member Eigenschaft Rollenzuweisung der entspricht Gruppe, die du willst.

Im Gegensatz zu Benutzern können Gruppen nicht in Active Directory-Gruppen und SharePoint-Gruppen verschachtelt werden. Sie müssen daher nicht tiefer als die direkten Rollenzuweisungen suchen.

Die einfachste Lösung ist die Verwendung der GetAssignmentByPrincipal Methode des SPRoleAssignmentCollection Objekts.

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

Beachten Sie, dass in dem obigen Code, wenn die BasePermissions Eigenschaft eines Berechtigungsstufe einer bestimmten SPBasePermissions enumeration zu vergleichen, ich bin mit dem von Microsoft's Guidelines for FlagsAttribute and Enum empfohlenen Ansatz:

  • Eine bequeme Möglichkeit, Testen, ob ein Flag in einem numerischen Wert gesetzt ist, besteht darin, eine bitweise UND-Operation zwischen dem numerischen Wert und der Flag-Aufzählungskonstanten durchzuführen, die alle Bits im numerischen Wert auf Null setzt, die nicht dem Flag entsprechen, und dann das Ergebnis testen dieser Operation ist gleich der Flag-Enumeration erratete Konstante.