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