2010-12-29 6 views
5

Come posso inviare notifiche del flusso di lavoro a tutti gli utenti in un ruolo Sitecore? Ad esempio, il passaggio successivo nel flusso di lavoro è l'approvazione o il rifiuto da parte del reparto legale. Come posso fare in modo che Sitecore invii e-mail a tutti gli utenti nel ruolo di Responsabile dell'approvazione legale? Sto cercando di evitare di mantenere una lista di distribuzione e vorrei prendere gli indirizzi email degli utenti in modo dinamico.Invio di e-mail a tutti gli utenti in un ruolo specifico dal flusso di lavoro Sitecore

risposta

8

La sicurezza di Sitecore si basa sul modello di sicurezza ASP.NET. Quindi, è possibile utilizzare API ASP.NET standard per ottenere gli utenti di un certo ruolo:

var users = System.Web.Security.Roles.GetUsersInRole("yourdomain\yourrole"); 

E più tardi scorrere l'utenti trovati e leggere la proprietà e-mail:

foreach (var user in users) 
{ 
    var membershipUser = System.Web.Security.Membership.GetUser(user); 
    var email = membershipUser.Email; 
    // use this email to send the message to that user 
} 

potrei sbagliarmi in dettagli sulla sintassi, ma sono sicuro che puoi capirlo conoscendo l'idea generale.

+0

Questi utenti sono in ruoli Sitecore. Come ottengo gli utenti nei ruoli Sitecore? Ho modificato la domanda. –

+0

Hm, sembra che non l'abbia chiarito e la tua domanda non la menziona esplicitamente: quale versione di Sitecore stai usando? –

+0

Voglio dire, le versioni precedenti alla 6.0 avevano il proprio sistema di sicurezza e le relative API. Quindi, se stai usando 5.X, l'esempio sopra non funzionerà per te ... Altrimenti, dovrebbe funzionare come avviene per i ruoli e gli utenti di Sitecore tramite l'API di sicurezza ASP.NET standard –

3

Per risolvere l'appartenenza indiretta è possibile utilizzare lo Sitecore.Security.Accounts.RolesInRolesManager che restituisce anche gli account utente che sono parte indiretta del ruolo specificato.

RolesInRolesManager.GetUsersInRole(Role.FromName(roleName), true)