From eaf5e1b10870c1a59c057b40b4ec27a35491f4a5 Mon Sep 17 00:00:00 2001 From: ARRRRNY Date: Thu, 30 Jul 2026 08:42:00 +0300 Subject: [PATCH] fix(audit): accept string | string[] in targetIdFromRequest Express's Request.params values are typed as string | string[], which caused TS2345 errors in ~20 controller call sites (including AdminSandboxController) that pass req.params.* to the @Audit decorator. Root-cause fix: widen AuditContext.targetIdFromRequest return type to accept string[], and coerce the value in AuditInterceptor.resolveTargetId by taking the first element when an array is returned. --- apps/api/src/audit/decorators/audit.decorator.ts | 2 +- apps/api/src/audit/interceptors/audit.interceptor.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/api/src/audit/decorators/audit.decorator.ts b/apps/api/src/audit/decorators/audit.decorator.ts index baf3b6efbd..e70852edbb 100644 --- a/apps/api/src/audit/decorators/audit.decorator.ts +++ b/apps/api/src/audit/decorators/audit.decorator.ts @@ -15,7 +15,7 @@ export const MASKED_AUDIT_VALUE = '********' export interface AuditContext { action: AuditAction targetType?: AuditTarget - targetIdFromRequest?: (req: Request) => string | null | undefined + targetIdFromRequest?: (req: Request) => string | string[] | null | undefined targetIdFromResult?: (result: any) => string | null | undefined requestMetadata?: Record any> } diff --git a/apps/api/src/audit/interceptors/audit.interceptor.ts b/apps/api/src/audit/interceptors/audit.interceptor.ts index 86dde0621b..f961964fce 100644 --- a/apps/api/src/audit/interceptors/audit.interceptor.ts +++ b/apps/api/src/audit/interceptors/audit.interceptor.ts @@ -139,7 +139,7 @@ export class AuditInterceptor implements NestInterceptor { if (auditContext.targetIdFromRequest) { const targetId = auditContext.targetIdFromRequest(request) if (targetId) { - return targetId + return Array.isArray(targetId) ? targetId[0] : targetId } }