public override void Display(DisplayElement dElement) { var role = dElement.Element as Role; if ((Account)role == (Account)null) { return; } foreach (var column in Columns) { switch (column.Name) { case "name": dElement.AddColumn(column.Header, role.DisplayName); break; case "description": dElement.AddColumn(column.Header, role.Description); break; case "domain": dElement.AddColumn(column.Header, role.Domain.Name); break; case "users": string usersInRole = string.Join("|", RolesInRolesManager.GetUsersInRole(role, true).Select(u => u.DisplayName).ToArray()); dElement.AddColumn(column.Header, usersInRole); break; } } }
// Get list of other author emails from current author's content group, if any public static string GetToAddressesForApproveRejectEmail(User currentAuthor, string itemPath) { if (currentAuthor.IsInRole(scAuthor)) { List <string> myDeptContentGroup = new List <string>(); string emailList = ""; string currentAuthorEmail = currentAuthor.Profile.Email; UserRoles allUserRoles = currentAuthor.Roles; // Find current author's content group(s) foreach (Role role in allUserRoles) { if (role.DisplayName.ToLower().StartsWith("hscnet\\sc_") && role.DisplayName.ToLower().EndsWith("_content")) { myDeptContentGroup.Add(role.DisplayName); } } // If author is in at least one dept content group if (myDeptContentGroup.Count > 0) { foreach (string dept in myDeptContentGroup) { IEnumerable <User> allMembersOfContentGroup = RolesInRolesManager.GetUsersInRole(Role.FromName(dept), true); foreach (User person in allMembersOfContentGroup) { if (person.IsInRole(scAuthor)) { using (new Sitecore.Security.Accounts.UserSwitcher(person)) { if (Sitecore.Configuration.Factory.GetDatabase("master").GetItem(itemPath).Security.CanWrite(person)) { // other authors also have WRITE access to the item originally updated by contributor if ((!String.IsNullOrEmpty(person.Profile.Email)) && (!person.Profile.Email.Equals(currentAuthorEmail))) { emailList += person.Profile.Email + ";"; } } else { goto nextGroup; } } } } if (!String.IsNullOrEmpty(emailList)) { goto done; } nextGroup :; } } done :; return(emailList); } return(null); }
public override void Display(DisplayElement dElement) { Role role = dElement.Element as Role; if ((Account)role == (Account)null) { return; } dElement.AddColumn("Name", role.DisplayName); dElement.AddColumn("Description", role.Description); dElement.AddColumn("Domain", role.Domain.Name); string usersInRole = string.Join("|", RolesInRolesManager.GetUsersInRole(role, true).Select(u => u.DisplayName).ToArray()); dElement.AddColumn("Users", usersInRole); }
/// <summary> /// Gets email list according to roles per section set. /// </summary> /// <param name="item">Root of the section.</param> /// <returns>Comma-separated string containing emails to send to.</returns> private static string GetEmailsForSection(Item item) { const string sectionNotFoundMessage = "Item '{0}' is not in any section"; const string roleNotFoundMessage = "Could not find roles to notify for item '{0}'!"; const string usersNotFoundMessage = "Could not find users to notify for item '{0}'!"; ScheduledPublishSection section = item.GetParentSection(); if (section == null) { Log.Warn(string.Format(sectionNotFoundMessage, item.Name), typeof(MailManager)); return(string.Empty); } IEnumerable <string> sectionRoleNames = section.SectionRoleNames; IList <Role> sectionRoles = sectionRoleNames.Where(Role.Exists).Select(Role.FromName).ToList(); if (sectionRoles.Count == 0) { Log.Error(string.Format(roleNotFoundMessage, item.Name), typeof(MailManager)); return(string.Empty); } IList <User> users = new List <User>(); foreach (var sectionRole in sectionRoles) { users = users.Union(RolesInRolesManager.GetUsersInRole(sectionRole, true)).ToList(); } if (users.Count == 0) { Log.Warn(string.Format(usersNotFoundMessage, item.Name), typeof(MailManager)); return(string.Empty); } IEnumerable <string> emailList = users .Where(x => !string.IsNullOrWhiteSpace(x.Profile.Email)) .Select(x => x.Profile.Email); return(string.Join(", ", emailList)); }
public static MailMessage AddRecipientsToMail(MailMessage mailMessage, string roleName) { if (Role.Exists(roleName)) { Role role = Role.FromName(roleName); List <User> users = RolesInRolesManager.GetUsersInRole(role, true) .Where(x => x.IsInRole(role)) .Where(user => !string.IsNullOrEmpty(user.Profile.Email)) .ToList(); foreach (User user in users) { mailMessage.To.Add(user.Profile.Email); } } else { Log.Error($"No Users with valid email addresses found in role {roleName}", typeof(SubmissionNotification)); } return(mailMessage); }
protected override void ProcessRecord() { if (!this.CanFindAccount(Identity, AccountType.Role)) { return; } var role = Role.FromName(Identity.Name); switch (ParameterSetName) { case "Id": WriteObject(RolesInRolesManager.GetRoleMembers(role, Recursive), true); break; case "UsersOnly": WriteObject(RolesInRolesManager.GetUsersInRole(role, Recursive), true); break; case "RolesOnly": WriteObject(RolesInRolesManager.GetRolesInRole(role, Recursive), true); break; } }