feat(audit-logs): filter audit logs by secret key

This commit is contained in:
Daniel Hougaard
2025-03-26 05:54:33 +04:00
parent 6482e88dfc
commit 4654a17e5f
9 changed files with 50 additions and 5 deletions
@@ -40,12 +40,14 @@ export const auditLogDALFactory = (db: TDbClient) => {
actorId,
actorType,
secretPath,
secretKey,
eventType,
eventMetadata
}: Omit<TFindQuery, "actor" | "eventType"> & {
actorId?: string;
actorType?: ActorType;
secretPath?: string;
secretKey?: string;
eventType?: EventType[];
eventMetadata?: Record<string, string>;
},
@@ -90,8 +92,24 @@ export const auditLogDALFactory = (db: TDbClient) => {
});
}
if (projectId && secretPath) {
void sqlQuery.whereRaw(`"eventMetadata" @> jsonb_build_object('secretPath', ?::text)`, [secretPath]);
if (projectId) {
if (secretPath) {
void sqlQuery.whereRaw(`"eventMetadata"->>'secretPath' = ?`, [secretPath]);
}
if (secretKey) {
void sqlQuery.whereRaw(
`(
"eventMetadata"->>'secretKey' = ?
OR
EXISTS (
SELECT 1
FROM jsonb_array_elements("eventMetadata"->'secrets') AS element
WHERE element->>'secretKey' = ?
)
)`,
[secretKey, secretKey]
);
}
}
// Filter by actor type
@@ -63,6 +63,7 @@ export const auditLogServiceFactory = ({
actorType: filter.actorType,
eventMetadata: filter.eventMetadata,
secretPath: filter.secretPath,
secretKey: filter.secretKey,
...(filter.projectId ? { projectId: filter.projectId } : { orgId: actorOrgId })
});
@@ -36,6 +36,7 @@ export type TListProjectAuditLogDTO = {
auditLogActorId?: string;
actorType?: ActorType;
secretPath?: string;
secretKey?: string;
eventMetadata?: Record<string, string>;
};
} & Omit<TProjectPermission, "projectId">;