/// <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)); } } } } }
/// <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(); }