SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure
SharePoint-Benutzergruppen mit AD-Benutzergruppen kombinieren

Blogs

Oliver Wirkus

Syndication

Certifications

Web 2.0

http://smits-net.de/img/linkedin_button.gif

XING

http://i80.photobucket.com/albums/j191/mikesamerica/twitter_button_zpsee74f711.png

 

 Add to Technorati Favorites

 

 Delicious Bookmark this on Delicious

 

  Locations of visitors to this page

 

Obwohl es sich bei dem kleinen Bestellwesen eigentlich um keine große Sache handeln sollte, liefert es doch tatsächlich Stoff für mittlerweile 3 Posts in meinem Blog.

Das besagte und bereits öfters erwähnte Bestellwesen benutzt Workflows und EventHandler, um das Genehmigen von Bestellungen zu realisieren. Da es mehrere Personengruppen und auch Einzelpersonen gibt, die eine Bestellung genehmigen dürfen, haben wir eine SharePoint-Benutzergruppe erzeugt und hier einige Einzelpersonen und zwei ActiveDirectory-Benutzergruppen hinzugefügt.

In einem EventHandler ging es nun darum, zu prüfen, ob der aktuelle Benutzer das Recht hat, eine Bestellung zu genehmigen. Prinzipiell ist diese Abfrage nicht besonders schwierig: sobald der aktuelle Benutzer ein Mitglied der SharePoint-Gruppe "Genehmiger" ist, darf er Bestellungen genehmigen. Da ein EventHandler beim Aufruf über den Parameter SPItemEventProperties auch den aktuellen Benutzer bzw. seinen LoginNamen bekommt, beschränkt sich die Abfrage auf die Mitgliedschaft in der SharePoint-Gruppe "Genehmiger".

Der erste Ansatz, diese Abfrage zu realisieren, war dieser: über den LoginNamen bestimmt man das zugehörige SPUser-Objekt. Dies könnte man z.B. über die AllUsers-Collection des Webs machen, zu dem die Liste gehört, die den Event ausgelöst hat. Auch diese Informationen bekommt man über die SPItemEventProperties. Hat man das SPUser-Objekt gefunden, kann man die Groups-Collection des SPUsers nach der Gruppe "Genehmiger" durchsuchen. Dieses Verfahren ist zwar naheliegend, funktioniert aber leider nur mit den als Einzelperson in der SharePoint-Gruppe "Genehmiger" eingetragenen Personen. Die ebenfalls dort eingetragenen ActiveDirectory-Gruppen werden hierbei nicht berücksichtigt.

Wie schafft man es aber nun, dass bei der Abfrage der Gruppenzugehörigkeit auch ActiveDirectory-Gruppen innerhalb einer SharePoint-Gruppe berücksichtigt werden?

Das klappt, wenn man den umgekehrten Weg aus dem ersten Ansatz wählt. Dies bedeutet: man geht nicht über den SPUser und dessen Groups-Collection, sondern besorgt sich z.B. über die SiteGroups-Collection des RootWebs des aktuellen Webs die ID der Gruppe "Genehmiger". Anschließend kann man die Methode IsCurrentUserMemberOfGroup() des RootWeb-Objekts benutzen, um herauszufinden, ob der aktuelle Benutzer Mitglied der SharePoint-Gruppe "Genehmiger" ist. Dazu gibt man der Methode IsCurrentUserMemberOfGroup() nur die zuvor besorgte ID der SharePoint-Gruppe "Genehmiger" mit. Mit diesem Aufruf werden dann auch die ActiveDirectory-Gruppen innerhalb der SharePoint-Gruppe berücksichtigt.

 

 

Add to Technorati Favorites


Bereitgestellt 20 Sep 2007 15:23 von Oliver Wirkus
Gespeichert unter: