2010-12-29 4 views
5

Wie kann ich Workflowbenachrichtigungen an alle Benutzer in einer Sitecore-Rolle senden? Der nächste Schritt im Workflow ist beispielsweise die Genehmigung oder Ablehnung der Rechtabteilung. Wie kann ich Sitecore E-Mails an alle Benutzer in der Rolle "Legal Approver" senden? Ich versuche, die Verwaltung einer Verteilerliste zu vermeiden, und möchte die E-Mail-Adressen der Benutzer dynamisch abrufen.Alle Benutzer in einer bestimmten Rolle aus dem Sitecore-Workflow per E-Mail senden

Antwort

8

Die Sitecore-Sicherheit basiert auf dem ASP.NET-Sicherheitsmodell. Daher können Sie Standard ASP.NET-API verwenden, um Benutzern einer bestimmten Rolle zu erhalten:

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

Und später Iterierte durch die gefundenen Benutzer und E-Mail-Eigenschaft lesen:

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 
} 

ich verwechselt werden könnte in Syntaxdetails, aber ich bin mir sicher, dass Sie es herausfinden können, wenn Sie die allgemeine Idee kennen.

+0

Diese Benutzer befinden sich in Sitecore-Rollen. Wie bekomme ich die Benutzer in die Sitecore-Rollen? Ich habe die Frage bearbeitet. –

+0

Hm, es scheint, ich habe das nicht geklärt und deine Frage erwähnt es nicht explizit - welche Version von Sitecore benutzt du? –

+0

Ich meine, die Versionen vor 6.0 hatten eigenes Sicherheitssystem und zugehörige API. Wenn Sie also 5.X verwenden, funktioniert das obige Beispiel nicht für Sie ... Ansonsten sollte es wie für Sitecore-Rollen und -Benutzer über die standardmäßige ASP.NET-Sicherheits-API funktionieren. –

3

Um die indirekte Mitgliedschaft zu lösen, können Sie die Sitecore.Security.Accounts.RolesInRolesManager verwenden, die auch Benutzerkonten zurückgibt, die indirekt Teil der angegebenen Rolle sind.

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