Skip to content

Commit

Permalink
+ (Group) Updated Group Member Requirement controls to only display r…
Browse files Browse the repository at this point in the history
…equirements that are viewable by the current person. (Fixes #5358)
  • Loading branch information
croske committed Apr 25, 2023
1 parent 4a108c2 commit b5d36e7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
6 changes: 4 additions & 2 deletions Rock/Web/UI/Controls/GroupMemberRequirementsContainer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -189,8 +189,10 @@ public void CreateRequirementStatusControls( int groupMemberId, bool currentPers

var hasPermissionToOverride = requirementStatus.GroupRequirement.GroupRequirementType.IsAuthorized( Rock.Security.Authorization.OVERRIDE, currentPerson );

// Do not render cards for "Not Applicable" or "Error" results.
if ( requirementStatus.MeetsGroupRequirement != MeetsGroupRequirement.NotApplicable && requirementStatus.MeetsGroupRequirement != MeetsGroupRequirement.Error )
var isAuthorized = requirementStatus.GroupRequirement.GroupRequirementType.IsAuthorized( Rock.Security.Authorization.VIEW, currentPerson );

// Do not render cards where the current person is not authorized, or the status is "Not Applicable" or "Error".
if ( isAuthorized && requirementStatus.MeetsGroupRequirement != MeetsGroupRequirement.NotApplicable && requirementStatus.MeetsGroupRequirement != MeetsGroupRequirement.Error )
{
var card = new GroupMemberRequirementCard( requirementStatus.GroupRequirement.GroupRequirementType, leaderCanOverride || hasPermissionToOverride )
{
Expand Down
16 changes: 13 additions & 3 deletions RockWeb/Blocks/Groups/GroupMemberList.ascx.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1352,7 +1352,9 @@ private void SetRequirementsFilter()
.SelectMany( r => r.Group.GroupType.GroupRequirements ).Distinct().ToList();
requirementsFromGroup.AddRange( requirementsFromGroupType );

ddlRequirementType.DataSource = requirementsFromGroup.Distinct().Select( r => new { Id = r.GroupRequirementTypeId, Name = r.GroupRequirementType.Name } );
ddlRequirementType.DataSource = requirementsFromGroup
.Where( gr => gr.GroupRequirementType.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) )
.Distinct().Select( r => new { Id = r.GroupRequirementTypeId, Name = r.GroupRequirementType.Name } );
ddlRequirementType.DataBind();
ddlRequirementType.Items.Insert( 0, new ListItem() );
}
Expand Down Expand Up @@ -1914,7 +1916,11 @@ protected void BindGroupMembersGrid( bool isExporting = false, bool isCommunicat
{
foreach ( var member in _group.Members )
{
_memberRequirements.Add( member.Id, member.GetGroupRequirementsStatuses( rockContext ).ToList() );
_memberRequirements.Add(
member.Id,
member.GetGroupRequirementsStatuses( rockContext )
.Where( s => s.GroupRequirement.GroupRequirementType.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) ).ToList()
);
}

_groupMemberIdsThatDoNotMeetGroupRequirements = _memberRequirements.Where( r => r.Value.Where( s => s.MeetsGroupRequirement == MeetsGroupRequirement.NotMet ).Any() ).Select( kvp => kvp.Key ).Distinct().ToHashSet();
Expand Down Expand Up @@ -2197,7 +2203,11 @@ protected void BindGroupMemberRequirementsGrid( bool isExporting = false, bool i
{
foreach ( var member in _group.Members )
{
_memberRequirements.Add( member.Id, member.GetGroupRequirementsStatuses( rockContext ).ToList() );
_memberRequirements.Add(
member.Id,
member.GetGroupRequirementsStatuses( rockContext )
.Where( s => s.GroupRequirement.GroupRequirementType.IsAuthorized( Rock.Security.Authorization.VIEW, CurrentPerson ) ).ToList()
);
}

_groupMemberIdsThatDoNotMeetGroupRequirements = _memberRequirements.Where( r => r.Value.Where( s => s.MeetsGroupRequirement == MeetsGroupRequirement.NotMet ).Any() ).Select( kvp => kvp.Key ).Distinct().ToHashSet();
Expand Down

0 comments on commit b5d36e7

Please sign in to comment.