Skip to content

Commit 9dd1589

Browse files
authored
GitHub Issue 811: App permissions page shows deactivated users in group members list (#1963)
### version 7.26.3 *Released*: 31 March 2026 - GitHub Issue 811: App permissions page shows deactivated users in group members list - Don't show inactive users in members list for group details on permissions page - include "Inactive User: " prefix in member button on group management page to match what we do for permissions page
1 parent df165de commit 9dd1589

14 files changed

Lines changed: 408 additions & 227 deletions

File tree

packages/components/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@labkey/components",
3-
"version": "7.26.2",
3+
"version": "7.26.3",
44
"description": "Components, models, actions, and utility functions for LabKey applications and pages",
55
"sideEffects": false,
66
"files": [

packages/components/releaseNotes/components.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
# @labkey/components
22
Components, models, actions, and utility functions for LabKey applications and pages
33

4+
### version 7.26.3
5+
*Released*: 31 March 2026
6+
- GitHub Issue 811: App permissions page shows deactivated users in group members list
7+
- Don't show inactive users in members list for group details on permissions page
8+
- include "Inactive User: " prefix in member button on group management page to match what we do for permissions page
9+
410
### version 7.26.2
511
*Released*: 31 March 2026
612
- GitHub Issue 919: App grid column header menu renders behind modal when grid shown in modal (more related to GitHub Issue 710)

packages/components/src/internal/components/administration/actions.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,31 @@ describe('Administration actions', () => {
3333
userDisplayName: 'rosalinep',
3434
userEmail: 'rosalinep@labkey.com',
3535
userId: 1005,
36+
userActive: true,
3637
},
3738
{
3839
groupId: 1035,
3940
groupName: 'NewSiteGroup',
4041
userDisplayName: 'rosalinep',
4142
userEmail: 'rosalinep@labkey.com',
4243
userId: 1005,
44+
userActive: true,
45+
},
46+
{
47+
groupId: 1035,
48+
groupName: 'NewSiteGroup',
49+
userDisplayName: 'inactiveUser',
50+
userEmail: 'inactive@labkey.com',
51+
userId: 1006,
52+
userActive: false,
4353
},
4454
{
4555
groupId: 1064,
4656
groupName: 'group1',
4757
userDisplayName: 'rosalinep',
4858
userEmail: 'rosalinep@labkey.com',
4959
userId: 1005,
60+
userActive: true,
5061
},
5162
{
5263
groupId: 1064,
@@ -68,10 +79,17 @@ describe('Administration actions', () => {
6879
'1035': {
6980
groupName: 'NewSiteGroup',
7081
members: [
82+
{
83+
id: 1006,
84+
name: 'inactive@labkey.com (inactiveUser)',
85+
type: MemberType.user,
86+
userActive: false,
87+
},
7188
{
7289
id: 1005,
7390
name: 'rosalinep@labkey.com (rosalinep)',
7491
type: MemberType.user,
92+
userActive: true,
7593
},
7694
],
7795
type: MemberType.siteGroup,
@@ -83,11 +101,13 @@ describe('Administration actions', () => {
83101
id: 1066,
84102
name: 'group2',
85103
type: MemberType.group,
104+
userActive: undefined,
86105
},
87106
{
88107
id: 1005,
89108
name: 'rosalinep@labkey.com (rosalinep)',
90109
type: MemberType.user,
110+
userActive: true,
91111
},
92112
],
93113
type: MemberType.group,

packages/components/src/internal/components/administration/actions.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { GroupMembership, Groups, Member, MemberType } from './models';
2121
// Where the members array is sorted by type, and then by name. The types stand for 'group,' 'site group,' and 'user'
2222
export const getGroupMembership = (groups: FetchedGroup[], groupMemberships: GroupMembership[]): Groups => {
2323
const groupsWithMembers = groupMemberships.reduce<Groups>((memberships, groupMembership) => {
24-
const { groupId, groupName, userDisplayName, userId, userEmail } = groupMembership;
24+
const { groupId, groupName, userDisplayName, userId, userEmail, userActive } = groupMembership;
2525
if (groupId === -1) {
2626
return memberships;
2727
}
@@ -41,6 +41,7 @@ export const getGroupMembership = (groups: FetchedGroup[], groupMemberships: Gro
4141
name: memberIsGroup ? foundGroup.name : `${userEmail} (${userDisplayName})`,
4242
id: userId,
4343
type: memberIsGroup ? MemberType.group : MemberType.user,
44+
userActive: memberIsGroup ? undefined : userActive,
4445
};
4546

4647
if (groupId in memberships) {

packages/components/src/internal/components/administration/models.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ export interface Member {
22
id: number;
33
name: string;
44
type: string;
5+
userActive?: boolean;
56
}
67

78
interface Group {
@@ -13,6 +14,7 @@ interface Group {
1314
export type GroupMembership = {
1415
groupId: number;
1516
groupName: string;
17+
userActive?: boolean;
1618
userDisplayName: string;
1719
userEmail: string;
1820
userId: number;

packages/components/src/internal/components/permissions/GroupDetailsPanel.spec.tsx

Lines changed: 0 additions & 150 deletions
This file was deleted.

0 commit comments

Comments
 (0)