private void SetRoleActions()
        {
            cblRoleActionList.Items.Clear();

            foreach (string action in iSecured.SupportedActions)
            {
                if (action == CurrentAction)
                {
                    ListItem roleItem = new ListItem(action);
                    roleItem.Selected = true;
                    cblRoleActionList.Items.Add(roleItem);
                }
                else
                {
                    bool alreadyAdded = false;

                    Rock.CMS.SpecialRole specialRole = Rock.CMS.SpecialRole.None;
                    int?groupId = Int32.Parse(ddlRoles.SelectedValue);

                    switch (groupId)
                    {
                    case -1: specialRole = Rock.CMS.SpecialRole.AllUsers; break;

                    case -2: specialRole = Rock.CMS.SpecialRole.AllAuthenticatedUsers; break;

                    case -3: specialRole = Rock.CMS.SpecialRole.AllUnAuthenticatedUsers; break;

                    default: specialRole = Rock.CMS.SpecialRole.None; break;
                    }

                    if (groupId < 0)
                    {
                        groupId = null;
                    }

                    foreach (Rock.Security.AuthRule rule in
                             Rock.Security.Authorization.AuthRules(iSecured.AuthEntity, iSecured.Id, action))
                    {
                        if (rule.SpecialRole == specialRole && rule.GroupId == groupId)
                        {
                            alreadyAdded = true;
                            break;
                        }
                    }

                    if (!alreadyAdded)
                    {
                        cblRoleActionList.Items.Add(new ListItem(action));
                    }
                }
            }
        }
        protected void lbAddRole_Click(object sender, EventArgs e)
        {
            List <Rock.Security.AuthRule> existingAuths =
                Rock.Security.Authorization.AuthRules(iSecured.AuthEntity, iSecured.Id, CurrentAction);

            int maxOrder = existingAuths.Count > 0 ? existingAuths.Last().Order : -1;

            foreach (ListItem li in cblRoleActionList.Items)
            {
                if (li.Selected)
                {
                    bool actionUpdated = false;
                    bool alreadyExists = false;

                    Rock.CMS.SpecialRole specialRole = Rock.CMS.SpecialRole.None;
                    int?groupId = Int32.Parse(ddlRoles.SelectedValue);

                    switch (groupId)
                    {
                    case -1: specialRole = Rock.CMS.SpecialRole.AllUsers; break;

                    case -2: specialRole = Rock.CMS.SpecialRole.AllAuthenticatedUsers; break;

                    case -3: specialRole = Rock.CMS.SpecialRole.AllUnAuthenticatedUsers; break;

                    default: specialRole = Rock.CMS.SpecialRole.None; break;
                    }

                    if (groupId < 0)
                    {
                        groupId = null;
                    }

                    foreach (Rock.Security.AuthRule rule in
                             Rock.Security.Authorization.AuthRules(iSecured.AuthEntity, iSecured.Id, li.Text))
                    {
                        if (rule.SpecialRole == specialRole && rule.GroupId == groupId)
                        {
                            alreadyExists = true;
                            break;
                        }
                    }

                    if (!alreadyExists)
                    {
                        Rock.CMS.Auth auth = new Rock.CMS.Auth();
                        auth.EntityType  = iSecured.AuthEntity;
                        auth.EntityId    = iSecured.Id;
                        auth.Action      = li.Text;
                        auth.AllowOrDeny = "A";
                        auth.SpecialRole = specialRole;
                        auth.GroupId     = groupId;
                        auth.Order       = ++maxOrder;
                        authService.Add(auth, CurrentPersonId);
                        authService.Save(auth, CurrentPersonId);

                        actionUpdated = true;
                    }

                    if (actionUpdated)
                    {
                        Rock.Security.Authorization.ReloadAction(iSecured.AuthEntity, iSecured.Id, li.Text);
                    }
                }
            }

            pnlAddRole.Visible = false;
            phList.Visible     = true;

            BindGrid();
        }