in

SharePoint Blogs

The Best Place for SharePoint-related Blogs

This Blog

Syndication

News

Ein guter Blog lebt auch vom Feedback der Leser. Aus diesem Grund möchte ich alle Leser bitten und auffordern, Feedback und Bewertung für einzelne Posts abzugeben. Ich freue mich natürlich auch, wenn mein Blog oder auch einzelne Posts verlinkt werden. Dies hilft anderen Leser und ist zugleich auch Ansporn für mich!

Meine SharePoint-Notizen

SharePoint-Notizen aus meiner täglichen Projektarbeit mit dem Microsoft Office SharePoint Server 2007

SharePoint-Benutzergruppen mit AD-Benutzergruppen kombinieren

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. Smile

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.

Comments

 

SharePoint, SharePoint and stuff said:

Suche Forrester: Microsoft Drives A Wedge Between High And Low-End Enterprise Search Artikel auf MSDN

October 8, 2007 7:48 AM
 

Johannes said:

Hallo,

gibt es eine Möglichkeit den Benutzer, der den Workflow manuell startet abzufragen, auch aus dem Sharepointdesigner heraus? Als Elementwerte erhalte ich dort immer nur "modified by" - was aber den Sachverhalt nicht trifft...

Grüße,

Johannes

July 23, 2008 4:32 AM

Leave a Comment

(required )  
(optional )
(required )  
Add

Need SharePoint Training? Attend a SharePoint Bootcamp!

Posts (c) their respective authors. Everything else (c) 2007 SharePoint Experts