2009-07-01 14 views
5

Voglio fare in modo programmatico in modo che gli utenti possano vedere solo elementi particolari nell'elenco.Autorizzazioni elemento elenco SharePoint

Fondamentalmente in un flusso di lavoro che viene eseguito quando viene creato un articolo, ho intenzione di fare alcune cose e informare alcune persone di questo oggetto. Voglio anche che cambi le autorizzazioni sull'elemento in modo che solo determinati utenti (cercati in runtime in base al contenuto degli articoli) possano leggere l'elemento. Il resto degli utenti che hanno accesso alla lista vedrà solo oggetti particolari ma non tutti loro. L'elemento dell'elenco potrebbe non essere necessariamente di proprietà ma l'utente o gli utenti che devono visualizzarlo, quindi non posso impostare le autorizzazioni dell'elenco per consentire agli utenti di vedere solo i propri articoli.

Per mettere questo in contesto se aiuta. L'elenco sta registrando i ruoli di lavoro in un particolare membro. Ogni voce di elenco è un'assegnazione di ruolo che contiene una ricerca per un ruolo nell'elenco dei ruoli e una ricerca per un membro nell'elenco dei membri. Non sto utilizzando direttamente un campo multilookup nell'elenco dei membri per i ruoli perché a ogni assegnazione di ruolo sono necessarie informazioni aggiuntive, ad esempio una descrizione, una data di inizio ecc. Ogni ruolo ha un particolare utente/gruppo che lo gestisce. Lo voglio in modo che quando si va a questa grande lista di incarichi di ruolo, un utente possa vedere solo le assegnazioni di ruolo per i ruoli di cui sono il gestore.

Il consiglio sarebbe molto apprezzato.

risposta

10

È possibile assegnare autorizzazioni alle singole voci dell'elenco. Per es.

 // 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); 

Ma attenzione circa le prestazioni e le implicazioni operative di assegnazione delle autorizzazioni per voce di elenco.

In generale, io preferirei

  • autorizzazioni assegnate non più profondo del livello di elenco
  • Per quanto possibile, assegnare le autorizzazioni ai gruppi e quindi includere singoli utenti in questi gruppi.
+0

Anche questa domanda/risposte potrebbe aiutare: http://stackoverflow.com/questions/1058232 –

Problemi correlati