Отправка электронной почты всем пользователям с определенной ролью из рабочего процесса Sitecore

Как я могу отправлять уведомления рабочего процесса всем пользователям с ролью Sitecore? Например, следующим шагом в рабочем процессе является одобрение или отклонение юридическим отделом. Как я могу заставить Sitecore отправлять электронные письма всем пользователям с ролью Legal Approver? Я пытаюсь избежать ведения списка рассылки и хочу динамически получать адреса электронной почты пользователей.


person kirk.burleson    schedule 29.12.2010    source источник


Ответы (2)


Безопасность Sitecore основана на модели безопасности ASP.NET. Следовательно, вы можете использовать стандартный ASP.NET API для получения пользователей определенной роли:

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

А затем переберите найденных пользователей и прочтите свойство Email:

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
}

Возможно, я ошибаюсь в деталях синтаксиса, но я уверен, что вы сможете понять это, зная общую идею.

person Yan Sklyarenko    schedule 29.12.2010
comment
Эти пользователи находятся в ролях Sitecore. Как мне получить пользователей в ролях Sitecore? Редактировал вопрос. - person kirk.burleson; 06.01.2011
comment
Хм, кажется, я не разъяснил это, и в вашем вопросе это прямо не упоминается - какую версию Sitecore вы используете? - person Yan Sklyarenko; 06.01.2011
comment
Я имею в виду, что в версиях до 6.0 была собственная система безопасности и связанный с ней API. Итак, если вы используете 5.X, приведенный выше пример не будет работать для вас ... В противном случае он должен работать так же, как для ролей и пользователей Sitecore, через стандартный API безопасности ASP.NET. - person Yan Sklyarenko; 07.01.2011
comment
А что насчет ролей в ролях? Я еще не изучал это, но как Sitecore справляется с этим в рамках обычного поставщика членства? - person Michael Edwards; 07.01.2011
comment
Ах, роли в ролях - вещь совершенно нестандартная. Он построен на основе безопасности ASP.NET. По сути, это просто таблица SQL, в которой хранится членство ролей в других ролях, и класс поставщика для решения этой проблемы через API. Вы можете изучить RolesInRolesProvider в Reflector для получения более подробной информации. - person Yan Sklyarenko; 07.01.2011

Чтобы разрешить косвенное членство, вы можете использовать Sitecore.Security.Accounts.RolesInRolesManager, который также возвращает учетные записи пользователей, которые являются косвенной частью указанной роли.

RolesInRolesManager.GetUsersInRole(Role.FromName(roleName), true)
person David Stöger    schedule 12.12.2011