diff --git a/web/packages/teleport/src/Audit/__snapshots__/Audit.story.test.tsx.snap b/web/packages/teleport/src/Audit/__snapshots__/Audit.story.test.tsx.snap
index ca989753cd8ec..0875764281c82 100644
--- a/web/packages/teleport/src/Audit/__snapshots__/Audit.story.test.tsx.snap
+++ b/web/packages/teleport/src/Audit/__snapshots__/Audit.story.test.tsx.snap
@@ -706,7 +706,7 @@ exports[`list of all events 1`] = `
- User [undefined] failed to remove member [undefined] from access list [access-list]
+ User [mike] failed to remove members [carrot, apple, banana] from access list [access-list]
|
- User [undefined] removed member [undefined] from access list [access-list]
+ User [mike] removed member [user] from access list [access-list]
|
- User [undefined] failed to update member [undefined] in access list [access-list]
+ User [mike] failed to update member [user] in access list [access-list]
|
- User [undefined] updated member [undefined] in access list [access-list]
+ User [mike] updated member [user] in access list [access-list]
|
- User [undefined] failed to add member [undefined] to access list [access-list]
+ User [mike] failed to add member [user] to access list [access-list]
|
- User [undefined] added member [undefined] to access list [access-list]
+ User [mike] added member [user] to access list [access-list]
|
- `User [${updated_by}] added member [${member_name}] to access list [${access_list_name}]`,
+ format: ({ access_list_name, members, updated_by }) =>
+ `User [${updated_by}] added ${formatMembers(
+ members
+ )} to access list [${access_list_name}]`,
},
[eventCodes.ACCESS_LIST_MEMBER_CREATE_FAILURE]: {
type: 'access_list.member.create',
desc: 'Access list member addition failure',
- format: ({ access_list_name, member_name, updated_by }) =>
- `User [${updated_by}] failed to add member [${member_name}] to access list [${access_list_name}]`,
+ format: ({ access_list_name, members, updated_by }) =>
+ `User [${updated_by}] failed to add ${formatMembers(
+ members
+ )} to access list [${access_list_name}]`,
},
[eventCodes.ACCESS_LIST_MEMBER_UPDATE]: {
type: 'access_list.member.update',
desc: 'Access list member updated',
- format: ({ access_list_name, member_name, updated_by }) =>
- `User [${updated_by}] updated member [${member_name}] in access list [${access_list_name}]`,
+ format: ({ access_list_name, members, updated_by }) =>
+ `User [${updated_by}] updated ${formatMembers(
+ members
+ )} in access list [${access_list_name}]`,
},
[eventCodes.ACCESS_LIST_MEMBER_UPDATE_FAILURE]: {
type: 'access_list.member.update',
desc: 'Access list member update failure',
- format: ({ access_list_name, member_name, updated_by }) =>
- `User [${updated_by}] failed to update member [${member_name}] in access list [${access_list_name}]`,
+ format: ({ access_list_name, members, updated_by }) =>
+ `User [${updated_by}] failed to update ${formatMembers(
+ members
+ )} in access list [${access_list_name}]`,
},
[eventCodes.ACCESS_LIST_MEMBER_DELETE]: {
type: 'access_list.member.delete',
desc: 'Access list member removed',
- format: ({ access_list_name, member_name, updated_by }) =>
- `User [${updated_by}] removed member [${member_name}] from access list [${access_list_name}]`,
+ format: ({ access_list_name, members, updated_by }) =>
+ `User [${updated_by}] removed ${formatMembers(
+ members
+ )} from access list [${access_list_name}]`,
},
[eventCodes.ACCESS_LIST_MEMBER_DELETE_FAILURE]: {
type: 'access_list.member.delete',
desc: 'Access list member removal failure',
- format: ({ access_list_name, member_name, updated_by }) =>
- `User [${updated_by}] failed to remove member [${member_name}] from access list [${access_list_name}]`,
+ format: ({ access_list_name, members, updated_by }) =>
+ `User [${updated_by}] failed to remove ${formatMembers(
+ members
+ )} from access list [${access_list_name}]`,
},
[eventCodes.ACCESS_LIST_MEMBER_DELETE_ALL_FOR_ACCESS_LIST]: {
type: 'access_list.member.delete_all_members',
@@ -1575,3 +1588,10 @@ function truncateStr(str: string, len: number): string {
}
return str.substring(0, len - 3) + '...';
}
+
+function formatMembers(members: { member_name: string }[]) {
+ const memberNames = members.map(m => m.member_name);
+ const memberNamesJoined = memberNames.join(', ');
+
+ return `${pluralize(memberNames.length, 'member')} [${memberNamesJoined}]`;
+}
diff --git a/web/packages/teleport/src/services/audit/types.ts b/web/packages/teleport/src/services/audit/types.ts
index 69fd1f3ecb333..b67458cf8e09d 100644
--- a/web/packages/teleport/src/services/audit/types.ts
+++ b/web/packages/teleport/src/services/audit/types.ts
@@ -1377,53 +1377,23 @@ export type RawEvents = {
updated_by: string;
}
>;
- [eventCodes.ACCESS_LIST_MEMBER_CREATE]: RawEvent<
- typeof eventCodes.ACCESS_LIST_MEMBER_CREATE,
- {
- access_list_name: string;
- member_name: string;
- updated_by: string;
- }
+ [eventCodes.ACCESS_LIST_MEMBER_CREATE]: RawEventAccessList<
+ typeof eventCodes.ACCESS_LIST_MEMBER_CREATE
>;
- [eventCodes.ACCESS_LIST_MEMBER_CREATE_FAILURE]: RawEvent<
- typeof eventCodes.ACCESS_LIST_MEMBER_CREATE_FAILURE,
- {
- access_list_name: string;
- member_name: string;
- updated_by: string;
- }
+ [eventCodes.ACCESS_LIST_MEMBER_CREATE_FAILURE]: RawEventAccessList<
+ typeof eventCodes.ACCESS_LIST_MEMBER_CREATE_FAILURE
>;
- [eventCodes.ACCESS_LIST_MEMBER_UPDATE]: RawEvent<
- typeof eventCodes.ACCESS_LIST_MEMBER_UPDATE,
- {
- access_list_name: string;
- member_name: string;
- updated_by: string;
- }
+ [eventCodes.ACCESS_LIST_MEMBER_UPDATE]: RawEventAccessList<
+ typeof eventCodes.ACCESS_LIST_MEMBER_UPDATE
>;
- [eventCodes.ACCESS_LIST_MEMBER_UPDATE_FAILURE]: RawEvent<
- typeof eventCodes.ACCESS_LIST_MEMBER_UPDATE_FAILURE,
- {
- access_list_name: string;
- member_name: string;
- updated_by: string;
- }
+ [eventCodes.ACCESS_LIST_MEMBER_UPDATE_FAILURE]: RawEventAccessList<
+ typeof eventCodes.ACCESS_LIST_MEMBER_UPDATE_FAILURE
>;
- [eventCodes.ACCESS_LIST_MEMBER_DELETE]: RawEvent<
- typeof eventCodes.ACCESS_LIST_MEMBER_DELETE,
- {
- access_list_name: string;
- member_name: string;
- updated_by: string;
- }
+ [eventCodes.ACCESS_LIST_MEMBER_DELETE]: RawEventAccessList<
+ typeof eventCodes.ACCESS_LIST_MEMBER_DELETE
>;
- [eventCodes.ACCESS_LIST_MEMBER_DELETE_FAILURE]: RawEvent<
- typeof eventCodes.ACCESS_LIST_MEMBER_DELETE_FAILURE,
- {
- access_list_name: string;
- member_name: string;
- updated_by: string;
- }
+ [eventCodes.ACCESS_LIST_MEMBER_DELETE_FAILURE]: RawEventAccessList<
+ typeof eventCodes.ACCESS_LIST_MEMBER_DELETE_FAILURE
>;
[eventCodes.ACCESS_LIST_MEMBER_DELETE_ALL_FOR_ACCESS_LIST]: RawEvent<
typeof eventCodes.ACCESS_LIST_MEMBER_DELETE_ALL_FOR_ACCESS_LIST,
@@ -1575,6 +1545,15 @@ type RawEventUserToken = RawEvent<
}
>;
+type RawEventAccessList = RawEvent<
+ T,
+ {
+ access_list_name: string;
+ members: { member_name: string }[];
+ updated_by: string;
+ }
+>;
+
type RawEventUser = RawEvent<
T,
{
|