Как я могу отправлять уведомления рабочего процесса всем пользователям с ролью Sitecore? Например, следующим шагом в рабочем процессе является одобрение или отклонение юридическим отделом. Как я могу заставить Sitecore отправлять электронные письма всем пользователям с ролью Legal Approver? Я пытаюсь избежать ведения списка рассылки и хочу динамически получать адреса электронной почты пользователей.
Отправка электронной почты всем пользователям с определенной ролью из рабочего процесса Sitecore
Ответы (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
Эти пользователи находятся в ролях Sitecore. Как мне получить пользователей в ролях Sitecore? Редактировал вопрос.
- person kirk.burleson; 06.01.2011
Хм, кажется, я не разъяснил это, и в вашем вопросе это прямо не упоминается - какую версию Sitecore вы используете?
- person Yan Sklyarenko; 06.01.2011
Я имею в виду, что в версиях до 6.0 была собственная система безопасности и связанный с ней API. Итак, если вы используете 5.X, приведенный выше пример не будет работать для вас ... В противном случае он должен работать так же, как для ролей и пользователей Sitecore, через стандартный API безопасности ASP.NET.
- person Yan Sklyarenko; 07.01.2011
А что насчет ролей в ролях? Я еще не изучал это, но как Sitecore справляется с этим в рамках обычного поставщика членства?
- person Michael Edwards; 07.01.2011
Ах, роли в ролях - вещь совершенно нестандартная. Он построен на основе безопасности 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