示例#1
0
        /// <summary>
        /// Sets the role actions.
        /// </summary>
        private void SetRoleActions()
        {
            cblRoleActionList.Items.Clear();

            using (var rockContext = new RockContext())
            {
                var authService = new AuthService(rockContext);

                var actions = iSecured.SupportedActions;
                foreach (var action in actions)
                {
                    if (action.Key == CurrentAction)
                    {
                        lActionDescription.Text = action.Value;

                        ListItem roleItem = new ListItem(action.Key);
                        roleItem.Selected = true;
                        cblRoleActionList.Items.Add(roleItem);
                    }
                    else
                    {
                        Rock.Model.SpecialRole specialRole = Rock.Model.SpecialRole.None;
                        int?groupId = ddlRoles.SelectedValue.AsIntegerOrNull();

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

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

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

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

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

                        if (!authService.GetAuths(iSecured.TypeId, iSecured.Id, action.Key)
                            .Any(a => a.SpecialRole == specialRole && a.GroupId == groupId))
                        {
                            cblRoleActionList.Items.Add(new ListItem(action.Key));
                        }
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// Handles the Click event of the lbAddRole control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void lbAddRole_Click(object sender, EventArgs e)
        {
            using (var rockContext = new RockContext())
            {
                var authService = new AuthService(rockContext);

                foreach (ListItem li in cblRoleActionList.Items)
                {
                    if (li.Selected)
                    {
                        Rock.Model.SpecialRole specialRole = Rock.Model.SpecialRole.None;
                        int?groupId = ddlRoles.SelectedValue.AsIntegerOrNull();

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

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

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

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

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

                        var existingAuths = authService.GetAuths(iSecured.TypeId, iSecured.Id, li.Text).ToList();
                        if (!existingAuths.Any(a => a.SpecialRole == specialRole && a.GroupId.Equals(groupId)))
                        {
                            int order = existingAuths.Count > 0 ? existingAuths.Last().Order + 1 : 0;

                            Rock.Model.Auth auth = new Rock.Model.Auth();
                            auth.EntityTypeId = iSecured.TypeId;
                            auth.EntityId     = iSecured.Id;
                            auth.Action       = li.Text;
                            auth.AllowOrDeny  = "A";
                            auth.SpecialRole  = specialRole;
                            auth.GroupId      = groupId;
                            auth.Order        = order;
                            authService.Add(auth);

                            rockContext.SaveChanges();

                            Authorization.ReloadAction(iSecured.TypeId, iSecured.Id, li.Text);
                        }
                    }
                }
            }

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

            BindGrid();
        }