Dirt/pm 26487/member access reports icon colors (#19363)

This commit is contained in:
Vijay Oommen 2026-03-06 09:05:26 -06:00 committed by GitHub
parent d08d8743be
commit 056a76edb4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 15 additions and 2 deletions

View File

@ -44,8 +44,8 @@
<div class="tw-flex tw-items-center">
<bit-avatar
size="small"
[text]="row.name"
[id]="row.userGuid"
[text]="row.name ? row.name : row.email"
[id]="row.userIdFromOrgUser"
[color]="row.avatarColor"
class="tw-mr-3"
></bit-avatar>

View File

@ -65,6 +65,7 @@ function createMockMember(index: number): MemberAccessReportView {
groupsCount: ((index * 2) % 5) + 1, // Deterministic: 1-5
itemsCount: ((index * 17) % 200) + 1, // Deterministic: 1-200
usesKeyConnector: index % 2 === 0, // Deterministic: alternating true/false
userIdFromOrgUser: `userIdFromOrgUser${index}`,
};
}

View File

@ -106,6 +106,7 @@ describe("MemberAccessReportService", () => {
resetPasswordEnrolled: options.resetPasswordEnrolled ?? false,
groups: options.groups ?? [],
avatarColor: options.avatarColor,
userId: "userIdFromOrgUser" + id,
});
const createMockCipher = (id: string, collectionIds: string[]): Partial<CipherView> => ({
@ -224,6 +225,7 @@ describe("MemberAccessReportService", () => {
itemsCount: 0,
userGuid: expect.any(String),
usesKeyConnector: expect.any(Boolean),
userIdFromOrgUser: "",
},
{
name: "James Lull",
@ -234,6 +236,7 @@ describe("MemberAccessReportService", () => {
itemsCount: 0,
userGuid: expect.any(String),
usesKeyConnector: expect.any(Boolean),
userIdFromOrgUser: "",
},
{
name: "Beth Williams",
@ -244,6 +247,7 @@ describe("MemberAccessReportService", () => {
itemsCount: 0,
userGuid: expect.any(String),
usesKeyConnector: expect.any(Boolean),
userIdFromOrgUser: "",
},
{
name: "Ray Williams",
@ -254,6 +258,7 @@ describe("MemberAccessReportService", () => {
itemsCount: 0,
userGuid: expect.any(String),
usesKeyConnector: expect.any(Boolean),
userIdFromOrgUser: "",
},
]);
});
@ -452,6 +457,7 @@ describe("MemberAccessReportService", () => {
collectionsCount: 1,
groupsCount: 1,
itemsCount: 1,
userIdFromOrgUser: "userIdFromOrgUser" + userId1,
});
});
@ -503,6 +509,7 @@ describe("MemberAccessReportService", () => {
collectionsCount: 2, // Distinct collections
groupsCount: 0,
itemsCount: 3, // Distinct ciphers
userIdFromOrgUser: "userIdFromOrgUser" + userId1,
});
});

View File

@ -50,6 +50,7 @@ interface OrganizationUserData {
twoFactorEnabled: boolean;
usesKeyConnector: boolean;
resetPasswordEnrolled: boolean;
userIdFromOrgUser: string | null; // userId from organization user endpoint (may be null for some users, e.g. pending invites)
}
interface MemberCipherAccess {
@ -128,6 +129,7 @@ export class MemberAccessReportService {
groupsCount: groupCount,
itemsCount: itemsCount,
usesKeyConnector: userDataArray.some((data) => data.usesKeyConnector),
userIdFromOrgUser: "", // V1 API doesn't provide userId from OrgUser endpoint
};
memberAccessReportViewCollection.push(aggregatedData);
@ -298,6 +300,7 @@ export class MemberAccessReportService {
twoFactorEnabled: orgUser.twoFactorEnabled || false,
usesKeyConnector: orgUser.usesKeyConnector || false,
resetPasswordEnrolled: orgUser.resetPasswordEnrolled || false,
userIdFromOrgUser: orgUser.userId || null,
});
}
@ -531,6 +534,7 @@ export class MemberAccessReportService {
groupsCount: data.groups.size,
itemsCount: data.items.size,
usesKeyConnector: metadata.usesKeyConnector,
userIdFromOrgUser: metadata.userIdFromOrgUser,
});
}

View File

@ -9,4 +9,5 @@ export type MemberAccessReportView = {
itemsCount: number;
userGuid: Guid;
usesKeyConnector: boolean;
userIdFromOrgUser: string | null; // maybe null and used for avatar
};