2009-07-01 18 views
5

Ich möchte es programmgesteuert so einrichten, dass Benutzer nur bestimmte Elemente in der Liste sehen können.Berechtigungen für SharePoint-Listenelemente

Grundsätzlich in einem Workflow, der ausgeführt wird, wenn ein Artikel erstellt wird, werde ich einige Sachen tun und einige Leute über diesen Artikel informieren. Ich möchte auch, dass die Berechtigungen für das Element geändert werden, sodass nur bestimmte Benutzer (die auf der Grundlage des Inhalts der Elemente nach der Laufzeit suchen) das Element lesen können. Die übrigen Benutzer, die Zugriff auf die Liste haben, sehen nur bestimmte Elemente, aber nicht alle. Das Listenelement muss nicht unbedingt im Besitz des Benutzers sein, aber die Benutzer müssen es sehen. Daher kann ich die Listenberechtigungen nicht so festlegen, dass Benutzer nur ihre eigenen Elemente sehen können.

Um dies in den Kontext zu bringen, wenn es hilft - Die Liste registriert Jobrollen für ein bestimmtes Mitglied. Jedes Listenelement ist eine Rollenzuweisung, die eine Suche nach einer Rolle in der Rollenliste und eine Suche nach einem Mitglied in der Mitgliederliste enthält. Ich verwende nicht direkt ein Multilookup-Feld in der Mitgliederliste für Rollen, da für jede Rollenzuweisung zusätzliche Informationen benötigt werden, z. B. eine Beschreibung, ein Startdatum usw. Jede Rolle hat einen bestimmten Benutzer/eine bestimmte Gruppe, die sie verwaltet. Ich möchte, dass ein Benutzer, wenn er zu dieser großen Liste von Rollenzuweisungen geht, nur die Rollenzuweisungen für die Rollen sehen kann, deren Manager er ist.

Beratung wäre sehr willkommen.

Antwort

10

Sie können einzelnen Listenelementen Berechtigungen zuweisen. Für Beispiel

 // get list item 
     SPListItem item = <your list item>; 
     if (!item.HasUniqueRoleAssignments) 
     { 
      item.BreakRoleInheritance(true); 
     } 

     // get principal 
     SPPrincipal principal = <principal to grant permissions to>; 

     // get role definition 
     SPRoleDefinition rd = <role that contains the permissions to be granted to the principal>; 

     // create role assignment 
     SPRoleAssignment ra = new SPRoleAssignment(principal); 
     ra.RoleDefinitionBindings.Add(rd); 
     item.RoleAssignments.Add(ra); 

Aber Vorsicht bei der Leistung und betrieblichen Auswirkungen der Zuweisung von Berechtigungen pro Listenelement.

Im Allgemeinen würde ich

  • Berechtigungen bevorzugen zugewiesen nicht tiefer als die Liste Ebene
  • So viel wie möglich, Berechtigungen zuweisen Gruppen und dann sind einzelne Benutzer in diesen Gruppen.
+0

Auch diese Frage/Antworten könnte helfen: http://stackoverflow.com/questions/1058232 –

Verwandte Themen