Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        // 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);
        }
Ejemplo n.º 4
0
        /// <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));
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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;
            }
        }