From 1c13ed54afe9b021dcc7d50834f0a7ffc5f59863 Mon Sep 17 00:00:00 2001 From: = Date: Mon, 17 Mar 2025 21:28:18 +0530 Subject: [PATCH] feat: updated audit log to permission metadataw --- backend/src/@types/fastify.d.ts | 1 + backend/src/ee/services/audit-log/audit-log-service.ts | 10 ++++++++-- backend/src/ee/services/audit-log/audit-log-types.ts | 2 ++ .../src/ee/services/permission/permission-service.ts | 3 +++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 99c7c4184..5d10830ad 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -106,6 +106,7 @@ declare module "@fastify/request-context" { claims: Record; }; }; + identityPermissionMetadata?: Record; // filled by permission service } } diff --git a/backend/src/ee/services/audit-log/audit-log-service.ts b/backend/src/ee/services/audit-log/audit-log-service.ts index 3b860864f..295923ef5 100644 --- a/backend/src/ee/services/audit-log/audit-log-service.ts +++ b/backend/src/ee/services/audit-log/audit-log-service.ts @@ -1,8 +1,10 @@ import { ForbiddenError } from "@casl/ability"; +import { requestContext } from "@fastify/request-context"; import { ActionProjectType } from "@app/db/schemas"; import { getConfig } from "@app/lib/config/env"; import { BadRequestError } from "@app/lib/errors"; +import { ActorType } from "@app/services/auth/auth-type"; import { OrgPermissionActions, OrgPermissionSubjects } from "../permission/org-permission"; import { TPermissionServiceFactory } from "../permission/permission-service"; @@ -81,8 +83,12 @@ export const auditLogServiceFactory = ({ if (!data.projectId && !data.orgId) throw new BadRequestError({ message: "Must specify either project id or org id" }); } - - return auditLogQueue.pushToLog(data); + const el = { ...data }; + if (el.actor.type === ActorType.USER || el.actor.type === ActorType.IDENTITY) { + const permissionMetadata = requestContext.get("identityPermissionMetadata"); + el.actor.metadata.permission = permissionMetadata; + } + return auditLogQueue.pushToLog(el); }; return { diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 9244e569e..eef11b8a6 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -290,6 +290,7 @@ interface UserActorMetadata { userId: string; email?: string | null; username: string; + permission?: Record; } interface ServiceActorMetadata { @@ -300,6 +301,7 @@ interface ServiceActorMetadata { interface IdentityActorMetadata { identityId: string; name: string; + permission?: Record; } interface ScimClientActorMetadata {} diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index dc68db1d0..5924884e2 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -257,6 +257,7 @@ export const permissionServiceFactory = ({ username: userProjectPermission.username, metadata: metadataKeyValuePair }; + requestContext.set("identityPermissionMetadata", metadataKeyValuePair); const interpolateRules = templatedRules( { identity: templateValue @@ -337,6 +338,8 @@ export const permissionServiceFactory = ({ metadata: metadataKeyValuePair, auth: identityAuthInfo }; + + requestContext.set("identityPermissionMetadata", metadataKeyValuePair); const interpolateRules = templatedRules( { identity: templateValue