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

How to: Item Level Permissions und Field Level Permissions

Nachdem in den letzten Tagen einige der möglichen neuen Features von SharePoint 2009 bekannt wurden und ich mich u.a. in Kommentaren zu ähnlichen Beiträgen zu diesem Thema und den möglichen Field Level Permissions geäußert habe, kamen einige Mails bei mir an, in denen ich gefragt wurde, was es denn genau mit diesen beiden Permissions auf sich hat. Da dieses Thema sicher auch für anderen Leser dieses Blogs interessant ist, beantworte ich die Fragen mit einem Blog-Artikel:

Legt man in einem SharePoint-Portal ein neues Web an in dem sich z.B. eine SharePoint-Liste befindet, dann erbt die Liste die Berechtigungseinstellungen des Webs. Dies bedeutet: ein Benutzer, der im übergeordneten Web Berechtigungen hat, hat diese Berechtigungen auch auf der SharePoint-Liste. Diese Standardeinstellung kann man durch Brechen der Berechtigungsvererbung verändern. Man kann also einem Benutzer andere Rechte auf der SharePoint-Liste einräumen, als dieser Benutzer im übergeordneten Web hat.

Diese Rechte gelten dann aber immer für die gesamte Liste. Räumt man also einem Benutzer Schreibrechte ein, gelten seine Schreibrechte für alle Einträge (Items) in der SharePoint-Liste. Naja - zugegeben, so ganz stimmt diese Aussage jetzt nicht, denn man kann z.B. durch die folgende Einstellung noch Einfluss auf die individuelle Rechtevergabe nehmen, aber mir geht es in diesem Artikel um das grundsätzliche Vergeben von Berechtigungen und nicht um Spezialfälle.

Also - abgesehen von der Einstellung im obigen Screenshot kann man einem Benutzer über die SharePoint-Oberfläche also nur Berechtigungen auf die komplette SharePoint-Liste mit allen Einträgen (Items) einräumen.

Dies ist natürlich nicht immer sinnvoll und es gibt zum Glück die Möglichkeit, einem Benutzer Rechte auf einzelne Einträge (Items) in einer SharePoint-Liste zu gewähren. Dies nennt man dann Item Level Permissions. Bedeutet: man kann einem Benutzer z.B. Schreibrechte auf den ersten, den fünften und den zwölften Eintrag in einer SharePoint-Liste gewähren - auf alle anderen Einträge hat dieser Benutzer aber weiterhin nur Leserechte. Dies kann man über das Kontextmenü eines Eintrags oder auch über das SharePoint-SDK machen. Im folgenden Absatz zeige ich anhand von ein paar Zeilen Code, wie man das mit den Item Level Permissions macht:

private void setListItemPermission(ref SPListItem oListItem)
{
   SPWeb oWeb = SPControl.GetContextWeb(Context);
   if (false == oListItem.HasUniqueRoleAssignments)
   {
      oListItem.BreakRoleInheritance(true);
   }

   SPGroupCollection oGroupCollection = oWeb.Groups;
   SPGroup oGroupProjektleiter = oGroupCollection["Projektleiter"];
   oListItem.RoleAssignments.Remove((SPPrincipal)oGroupProjektleiter);

   SPUser oProviderGroupProjektleiter = oWeb.EnsureUser("aspnetsqlroleprovider:projektleiter");
   SPRoleDefinition oRoleDefWriter = oWeb.RoleDefinitions.GetByType(SPRoleType.Contributor);
   SPRoleAssignment oRolePortalWriter = new SPRoleAssignment((SPPrincipal)oProviderGroupProjektleiter);
   oRolePortalWriter.RoleDefinitionBindings.Add(oRoleDefWriter);
   oListItem.RoleAssignments.Add(oRolePortalWriter);

   oListItem.Update();
}
 

So - jetzt wissen wir, wie man das mit den Item Level Permissions macht, aber was ist jetzt der Unterschied zu Field Level Permissions?

Die Field Level Permissions gehen noch einen Schritt weiter (sind aber leider in SharePoint 2007 nicht implementiert und deswegen auch nicht nutzbar): statt einzelne Berechtigungen auf einen Eintrag in einer SharePoint-Liste zu vergeben (wie es mit den Item Level Permissions möglich ist), kann man mit Field Level Permissions Berechtigungen auf ein einzelnes Feld eines Eintrags vergeben.

Dazu ein Beispiel: angenommen wir haben eine SharePoint-Liste in der Projektpläne verwaltet werden. Diese Projektpläne haben -neben den Feldern für Termine, Beschreibung, Resourcen, ... - auch noch ein Feld 'Budget'. Alle Projektleiter haben Schreibrechte auf diese Liste, damit sie die einzelnen Projektpläne aktualisieren können, nur das Feld 'Budget' dürfen sie nicht beschreiben. Dieses Feld 'Budget' soll nur vom Abteilungsleiter verändert werden dürfen. Dieses -einfache- Szenario ist so mit SharePoint 2007 nur schwer umsetzbar. Gäbe es Field Level Permissions, dann wäre die Umsetzung wesentlich einfacher, denn man müßte nur die Spalte 'Budget' in der Projektliste entsprechend verrechten.

Um es noch einmal einfacher auszudrücken: mit Item Level Permissions kann man separate Berechtigungen auf einen Eintrag (Item) oder eine Zeile in einer SharePoint-Liste vergeben. Mit Field Level Permissions kann man individuelle Berechtigungen auf ein einziges Feld in diesem Eintrag (bzw. dieser Zeile) in einer SharePoint-Liste vergeben.

Gerade im Bereich Zusammenarbeit (Collaboration), in dem oft Daten in tabellarischer Form von verschiedenen Benutzern bearbeitet werden, wären Field Level Permissions sehr hilfreich, denn sie würden das Implementieren von Anforderungen mit SharePoint-Listen sehr vereinfacher. Viele Anforderungen, die heute nur sehr aufwändig umzusetzen sind, ließen sich mit Field Level Permissions out-of-the-box umsetzen.

Und genau aus diesem Grund wünsche ich mir für SharePoint 2009 die Umsetzung der Field Level Permissions.

 

Add to Technorati Favorites

Comments

No Comments

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