From 2cbad206b593c1b2a8981fad6c9af98a50a4c563 Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 17 May 2025 03:02:33 -0400 Subject: [PATCH 1/6] feat(audit-logs): Audit org updates, project create / update / delete --- .../ee/services/audit-log/audit-log-types.ts | 44 ++++++++--- .../src/ee/services/license/license-fns.ts | 4 +- .../server/routes/v1/organization-router.ts | 11 ++- .../src/server/routes/v1/project-router.ts | 77 +++++++++++++++++++ .../src/server/routes/v2/project-router.ts | 42 ++++++---- .../src/hooks/api/auditLogs/constants.tsx | 9 ++- frontend/src/hooks/api/auditLogs/enums.tsx | 9 ++- 7 files changed, 164 insertions(+), 32 deletions(-) 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 365ada987..2b2fe1f4c 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -315,7 +315,6 @@ export enum EventType { CREATE_PROJECT_TEMPLATE = "create-project-template", UPDATE_PROJECT_TEMPLATE = "update-project-template", DELETE_PROJECT_TEMPLATE = "delete-project-template", - APPLY_PROJECT_TEMPLATE = "apply-project-template", GET_APP_CONNECTIONS = "get-app-connections", GET_AVAILABLE_APP_CONNECTIONS_DETAILS = "get-available-app-connections-details", GET_APP_CONNECTION = "get-app-connection", @@ -375,7 +374,13 @@ export enum EventType { MICROSOFT_TEAMS_WORKFLOW_INTEGRATION_LIST = "microsoft-teams-workflow-integration-list", PROJECT_ASSUME_PRIVILEGE_SESSION_START = "project-assume-privileges-session-start", - PROJECT_ASSUME_PRIVILEGE_SESSION_END = "project-assume-privileges-session-end" + PROJECT_ASSUME_PRIVILEGE_SESSION_END = "project-assume-privileges-session-end", + + UPDATE_ORG = "update-org", + + CREATE_PROJECT = "create-project", + UPDATE_PROJECT = "update-project", + DELETE_PROJECT = "delete-project" } export const filterableSecretEvents: EventType[] = [ @@ -2451,14 +2456,6 @@ interface DeleteProjectTemplateEvent { }; } -interface ApplyProjectTemplateEvent { - type: EventType.APPLY_PROJECT_TEMPLATE; - metadata: { - template: string; - projectId: string; - }; -} - interface GetAppConnectionsEvent { type: EventType.GET_APP_CONNECTIONS; metadata: { @@ -2913,6 +2910,26 @@ interface MicrosoftTeamsWorkflowIntegrationUpdateEvent { }; } +interface OrgUpdateEvent { + type: EventType.UPDATE_ORG; + metadata: Record; // The update parameters +} + +interface ProjectCreateEvent { + type: EventType.CREATE_PROJECT; + metadata: Record; // The creation parameters +} + +interface ProjectUpdateEvent { + type: EventType.UPDATE_PROJECT; + metadata: Record; // The update parameters +} + +interface ProjectDeleteEvent { + type: EventType.DELETE_PROJECT; + metadata: Record; +} + export type Event = | GetSecretsEvent | GetSecretEvent @@ -3117,7 +3134,6 @@ export type Event = | CreateProjectTemplateEvent | UpdateProjectTemplateEvent | DeleteProjectTemplateEvent - | ApplyProjectTemplateEvent | GetAppConnectionsEvent | GetAvailableAppConnectionsDetailsEvent | GetAppConnectionEvent @@ -3179,4 +3195,8 @@ export type Event = | MicrosoftTeamsWorkflowIntegrationGetTeamsEvent | MicrosoftTeamsWorkflowIntegrationGetEvent | MicrosoftTeamsWorkflowIntegrationListEvent - | MicrosoftTeamsWorkflowIntegrationUpdateEvent; + | MicrosoftTeamsWorkflowIntegrationUpdateEvent + | OrgUpdateEvent + | ProjectCreateEvent + | ProjectUpdateEvent + | ProjectDeleteEvent; diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index b7ae6f7ee..8326d08a1 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -26,8 +26,8 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ customRateLimits: false, customAlerts: false, secretAccessInsights: false, - auditLogs: false, - auditLogsRetentionDays: 0, + auditLogs: true, + auditLogsRetentionDays: 2, auditLogStreams: false, auditLogStreamLimit: 3, samlSSO: false, diff --git a/backend/src/server/routes/v1/organization-router.ts b/backend/src/server/routes/v1/organization-router.ts index e14dacebb..1ec34d5a1 100644 --- a/backend/src/server/routes/v1/organization-router.ts +++ b/backend/src/server/routes/v1/organization-router.ts @@ -301,8 +301,17 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => { data: req.body }); + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.UPDATE_ORG, + metadata: req.body + } + }); + return { - message: "Successfully changed organization name", + message: "Successfully updated organization", organization }; } diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index 2e983cb83..8a2e74e74 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -263,6 +263,17 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { actor: req.permission.type, actorOrgId: req.permission.orgId }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: req.params.workspaceId, + event: { + type: EventType.DELETE_PROJECT, + metadata: {} + } + }); + return { workspace }; } }); @@ -297,6 +308,19 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, name: req.body.name }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: req.params.workspaceId, + event: { + type: EventType.UPDATE_PROJECT, + metadata: { + name: req.body.name + } + } + }); + return { message: "Successfully changed workspace name", workspace @@ -375,6 +399,17 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { actor: req.permission.type, actorOrgId: req.permission.orgId }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: req.params.workspaceId, + event: { + type: EventType.UPDATE_PROJECT, + metadata: req.body + } + }); + return { workspace }; @@ -411,6 +446,17 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, autoCapitalization: req.body.autoCapitalization }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: req.params.workspaceId, + event: { + type: EventType.UPDATE_PROJECT, + metadata: req.body + } + }); + return { message: "Successfully changed workspace settings", workspace @@ -448,6 +494,17 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, hasDeleteProtection: req.body.hasDeleteProtection }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: req.params.workspaceId, + event: { + type: EventType.UPDATE_PROJECT, + metadata: req.body + } + }); + return { message: "Successfully changed workspace settings", workspace @@ -486,6 +543,16 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { workspaceSlug: req.params.workspaceSlug }); + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: workspace.id, + event: { + type: EventType.UPDATE_PROJECT, + metadata: req.body + } + }); + return { message: "Successfully changed workspace version limit", workspace @@ -524,6 +591,16 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { auditLogsRetentionDays: req.body.auditLogsRetentionDays }); + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: workspace.id, + event: { + type: EventType.UPDATE_PROJECT, + metadata: req.body + } + }); + return { message: "Successfully updated project's audit logs retention period", workspace diff --git a/backend/src/server/routes/v2/project-router.ts b/backend/src/server/routes/v2/project-router.ts index 3d92bfb1a..a8778facf 100644 --- a/backend/src/server/routes/v2/project-router.ts +++ b/backend/src/server/routes/v2/project-router.ts @@ -206,19 +206,15 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { } }); - if (req.body.template) { - await server.services.auditLog.createAuditLog({ - ...req.auditLogInfo, - orgId: req.permission.orgId, - event: { - type: EventType.APPLY_PROJECT_TEMPLATE, - metadata: { - template: req.body.template, - projectId: project.id - } - } - }); - } + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: project.id, + event: { + type: EventType.CREATE_PROJECT, + metadata: req.body + } + }); return { project }; } @@ -262,6 +258,16 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { actor: req.permission.type }); + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: project.id, + event: { + type: EventType.DELETE_PROJECT, + metadata: {} + } + }); + return project; } }); @@ -341,6 +347,16 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { actorOrgId: req.permission.orgId }); + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: project.id, + event: { + type: EventType.UPDATE_PROJECT, + metadata: req.body + } + }); + return project; } }); diff --git a/frontend/src/hooks/api/auditLogs/constants.tsx b/frontend/src/hooks/api/auditLogs/constants.tsx index f726566cd..555d66b88 100644 --- a/frontend/src/hooks/api/auditLogs/constants.tsx +++ b/frontend/src/hooks/api/auditLogs/constants.tsx @@ -123,7 +123,6 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.CREATE_PROJECT_TEMPLATE]: "Create project template", [EventType.UPDATE_PROJECT_TEMPLATE]: "Update project template", [EventType.DELETE_PROJECT_TEMPLATE]: "Delete project template", - [EventType.APPLY_PROJECT_TEMPLATE]: "Apply project template", [EventType.GET_APP_CONNECTIONS]: "List App Connections", [EventType.GET_AVAILABLE_APP_CONNECTIONS_DETAILS]: "List App Connections Details", [EventType.GET_APP_CONNECTION]: "Get App Connection", @@ -189,7 +188,13 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.ADD_IDENTITY_LDAP_AUTH]: "Attached LDAP Auth to identity", [EventType.UPDATE_IDENTITY_LDAP_AUTH]: "Updated LDAP Auth for identity", [EventType.GET_IDENTITY_LDAP_AUTH]: "Retrieved LDAP Auth for identity", - [EventType.REVOKE_IDENTITY_LDAP_AUTH]: "Revoked LDAP Auth for identity" + [EventType.REVOKE_IDENTITY_LDAP_AUTH]: "Revoked LDAP Auth for identity", + + [EventType.UPDATE_ORG]: "Update Organization", + + [EventType.CREATE_PROJECT]: "Create Project", + [EventType.UPDATE_PROJECT]: "Update Project", + [EventType.DELETE_PROJECT]: "Delete Project" }; export const userAgentTypeToNameMap: { [K in UserAgentType]: string } = { diff --git a/frontend/src/hooks/api/auditLogs/enums.tsx b/frontend/src/hooks/api/auditLogs/enums.tsx index b74969d6d..19dfd9522 100644 --- a/frontend/src/hooks/api/auditLogs/enums.tsx +++ b/frontend/src/hooks/api/auditLogs/enums.tsx @@ -131,7 +131,6 @@ export enum EventType { CREATE_PROJECT_TEMPLATE = "create-project-template", UPDATE_PROJECT_TEMPLATE = "update-project-template", DELETE_PROJECT_TEMPLATE = "delete-project-template", - APPLY_PROJECT_TEMPLATE = "apply-project-template", GET_APP_CONNECTIONS = "get-app-connections", GET_AVAILABLE_APP_CONNECTIONS_DETAILS = "get-available-app-connections-details", GET_APP_CONNECTION = "get-app-connection", @@ -183,5 +182,11 @@ export enum EventType { MICROSOFT_TEAMS_WORKFLOW_INTEGRATION_CHECK_INSTALLATION_STATUS = "microsoft-teams-workflow-integration-check-installation-status", MICROSOFT_TEAMS_WORKFLOW_INTEGRATION_GET_TEAMS = "microsoft-teams-workflow-integration-get-teams", MICROSOFT_TEAMS_WORKFLOW_INTEGRATION_GET = "microsoft-teams-workflow-integration-get", - MICROSOFT_TEAMS_WORKFLOW_INTEGRATION_LIST = "microsoft-teams-workflow-integration-list" + MICROSOFT_TEAMS_WORKFLOW_INTEGRATION_LIST = "microsoft-teams-workflow-integration-list", + + UPDATE_ORG = "update-org", + + CREATE_PROJECT = "create-project", + UPDATE_PROJECT = "update-project", + DELETE_PROJECT = "delete-project" } From 9bc5c55cd0fa25c6a424666a4965144884c4944c Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 17 May 2025 03:03:44 -0400 Subject: [PATCH 2/6] revert license --- backend/src/ee/services/license/license-fns.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index 8326d08a1..b7ae6f7ee 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -26,8 +26,8 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ customRateLimits: false, customAlerts: false, secretAccessInsights: false, - auditLogs: true, - auditLogsRetentionDays: 2, + auditLogs: false, + auditLogsRetentionDays: 0, auditLogStreams: false, auditLogStreamLimit: 3, samlSSO: false, From a77cc77be8ad1db98a4e55577b1b8b86c331dc62 Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 17 May 2025 03:15:22 -0400 Subject: [PATCH 3/6] explicitly pass values --- .../ee/services/audit-log/audit-log-types.ts | 2 +- .../src/server/routes/v1/project-router.ts | 25 +++++++++++++++---- .../src/server/routes/v2/project-router.ts | 23 +++++++++++++++-- 3 files changed, 42 insertions(+), 8 deletions(-) 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 2b2fe1f4c..7793cd97f 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -2917,7 +2917,7 @@ interface OrgUpdateEvent { interface ProjectCreateEvent { type: EventType.CREATE_PROJECT; - metadata: Record; // The creation parameters + metadata: Record; // The creation parameters } interface ProjectUpdateEvent { diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index 8a2e74e74..11fb63ef4 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -406,7 +406,14 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: req.body + metadata: { + ...(req.body.name !== undefined && { name: req.body.name }), + ...(req.body.description !== undefined && { description: req.body.description }), + ...(req.body.autoCapitalization !== undefined && { autoCapitalization: req.body.autoCapitalization }), + ...(req.body.hasDeleteProtection !== undefined && { hasDeleteProtection: req.body.hasDeleteProtection }), + ...(req.body.slug !== undefined && { slug: req.body.slug }), + ...(req.body.secretSharing !== undefined && { secretSharing: req.body.secretSharing }) + } } }); @@ -453,7 +460,9 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: req.body + metadata: { + autoCapitalization: req.body.autoCapitalization + } } }); @@ -501,7 +510,9 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: req.body + metadata: { + hasDeleteProtection: req.body.hasDeleteProtection + } } }); @@ -549,7 +560,9 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: workspace.id, event: { type: EventType.UPDATE_PROJECT, - metadata: req.body + metadata: { + pitVersionLimit: req.body.pitVersionLimit + } } }); @@ -597,7 +610,9 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: workspace.id, event: { type: EventType.UPDATE_PROJECT, - metadata: req.body + metadata: { + auditLogsRetentionDays: req.body.auditLogsRetentionDays + } } }); diff --git a/backend/src/server/routes/v2/project-router.ts b/backend/src/server/routes/v2/project-router.ts index a8778facf..d06a7df47 100644 --- a/backend/src/server/routes/v2/project-router.ts +++ b/backend/src/server/routes/v2/project-router.ts @@ -212,7 +212,21 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.CREATE_PROJECT, - metadata: req.body + metadata: { + actorId: req.permission.id, + actor: req.permission.type, + actorOrgId: req.permission.orgId, + actorAuthMethod: req.permission.authMethod, + ...(req.body.projectName !== undefined && { workspaceName: req.body.projectName }), + ...(req.body.projectDescription !== undefined && { workspaceDescription: req.body.projectDescription }), + ...(req.body.slug !== undefined && { slug: req.body.slug }), + ...(req.body.kmsKeyId !== undefined && { kmsKeyId: req.body.kmsKeyId }), + ...(req.body.template !== undefined && { template: req.body.template }), + ...(req.body.type !== undefined && { type: req.body.type }), + ...(req.body.shouldCreateDefaultEnvs !== undefined && { + createDefaultEnvs: req.body.shouldCreateDefaultEnvs + }) + } } }); @@ -353,7 +367,12 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.UPDATE_PROJECT, - metadata: req.body + metadata: { + ...(req.body.name !== undefined && { name: req.body.name }), + ...(req.body.description !== undefined && { description: req.body.description }), + ...(req.body.autoCapitalization !== undefined && { autoCapitalization: req.body.autoCapitalization }), + ...(req.body.hasDeleteProtection !== undefined && { hasDeleteProtection: req.body.hasDeleteProtection }) + } } }); From 67d4da40ecd2ac98a2b9cd39330f9f07030c77c3 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 20 May 2025 16:48:24 -0400 Subject: [PATCH 4/6] review fixes --- .../ee/services/audit-log/audit-log-types.ts | 42 +++++++++++++++++-- .../src/ee/services/license/license-fns.ts | 4 +- .../src/server/routes/v1/project-router.ts | 34 +++++---------- .../src/server/routes/v2/project-router.ts | 28 +++---------- .../OrgProductSelectSection.tsx | 4 +- .../ProjectGeneralTab/ProjectGeneralTab.tsx | 2 +- .../SecretSharingSection.tsx | 3 +- 7 files changed, 61 insertions(+), 56 deletions(-) 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 7793cd97f..172bf3b4e 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -1,3 +1,4 @@ +import { ProjectType } from "@app/db/schemas"; import { TCreateProjectTemplateDTO, TUpdateProjectTemplateDTO @@ -2912,22 +2913,55 @@ interface MicrosoftTeamsWorkflowIntegrationUpdateEvent { interface OrgUpdateEvent { type: EventType.UPDATE_ORG; - metadata: Record; // The update parameters + metadata: { + name?: string; + slug?: string; + authEnforced?: boolean; + scimEnabled?: boolean; + defaultMembershipRoleSlug?: string; + enforceMfa?: boolean; + selectedMfaMethod?: string; + allowSecretSharingOutsideOrganization?: boolean; + bypassOrgAuthEnabled?: boolean; + userTokenExpiration?: string; + secretsProductEnabled?: boolean; + pkiProductEnabled?: boolean; + kmsProductEnabled?: boolean; + sshProductEnabled?: boolean; + scannerProductEnabled?: boolean; + shareSecretsProductEnabled?: boolean; + }; } interface ProjectCreateEvent { type: EventType.CREATE_PROJECT; - metadata: Record; // The creation parameters + metadata: { + projectName: string; + slug?: string; + type: ProjectType; + }; } interface ProjectUpdateEvent { type: EventType.UPDATE_PROJECT; - metadata: Record; // The update parameters + metadata: { + name?: string; + description?: string; + autoCapitalization?: boolean; + hasDeleteProtection?: boolean; + slug?: string; + secretSharing?: boolean; + pitVersionLimit?: number; + auditLogsRetentionDays?: number; + }; } interface ProjectDeleteEvent { type: EventType.DELETE_PROJECT; - metadata: Record; + metadata: { + projectId: string; + projectName: string; + }; } export type Event = diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index b7ae6f7ee..365aafa6c 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -26,8 +26,8 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ customRateLimits: false, customAlerts: false, secretAccessInsights: false, - auditLogs: false, - auditLogsRetentionDays: 0, + auditLogs: true, + auditLogsRetentionDays: 3, auditLogStreams: false, auditLogStreamLimit: 3, samlSSO: false, diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index 11fb63ef4..8a53a648d 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -270,7 +270,10 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.DELETE_PROJECT, - metadata: {} + metadata: { + projectId: workspace.id, + projectName: workspace.name + } } }); @@ -315,9 +318,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: { - name: req.body.name - } + metadata: req.body } }); @@ -406,14 +407,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: { - ...(req.body.name !== undefined && { name: req.body.name }), - ...(req.body.description !== undefined && { description: req.body.description }), - ...(req.body.autoCapitalization !== undefined && { autoCapitalization: req.body.autoCapitalization }), - ...(req.body.hasDeleteProtection !== undefined && { hasDeleteProtection: req.body.hasDeleteProtection }), - ...(req.body.slug !== undefined && { slug: req.body.slug }), - ...(req.body.secretSharing !== undefined && { secretSharing: req.body.secretSharing }) - } + metadata: req.body } }); @@ -460,9 +454,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: { - autoCapitalization: req.body.autoCapitalization - } + metadata: req.body } }); @@ -510,9 +502,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.UPDATE_PROJECT, - metadata: { - hasDeleteProtection: req.body.hasDeleteProtection - } + metadata: req.body } }); @@ -560,9 +550,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: workspace.id, event: { type: EventType.UPDATE_PROJECT, - metadata: { - pitVersionLimit: req.body.pitVersionLimit - } + metadata: req.body } }); @@ -610,9 +598,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: workspace.id, event: { type: EventType.UPDATE_PROJECT, - metadata: { - auditLogsRetentionDays: req.body.auditLogsRetentionDays - } + metadata: req.body } }); diff --git a/backend/src/server/routes/v2/project-router.ts b/backend/src/server/routes/v2/project-router.ts index d06a7df47..b4d48e4f3 100644 --- a/backend/src/server/routes/v2/project-router.ts +++ b/backend/src/server/routes/v2/project-router.ts @@ -212,21 +212,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.CREATE_PROJECT, - metadata: { - actorId: req.permission.id, - actor: req.permission.type, - actorOrgId: req.permission.orgId, - actorAuthMethod: req.permission.authMethod, - ...(req.body.projectName !== undefined && { workspaceName: req.body.projectName }), - ...(req.body.projectDescription !== undefined && { workspaceDescription: req.body.projectDescription }), - ...(req.body.slug !== undefined && { slug: req.body.slug }), - ...(req.body.kmsKeyId !== undefined && { kmsKeyId: req.body.kmsKeyId }), - ...(req.body.template !== undefined && { template: req.body.template }), - ...(req.body.type !== undefined && { type: req.body.type }), - ...(req.body.shouldCreateDefaultEnvs !== undefined && { - createDefaultEnvs: req.body.shouldCreateDefaultEnvs - }) - } + metadata: req.body } }); @@ -278,7 +264,10 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.DELETE_PROJECT, - metadata: {} + metadata: { + projectId: project.id, + projectName: project.name + } } }); @@ -367,12 +356,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.UPDATE_PROJECT, - metadata: { - ...(req.body.name !== undefined && { name: req.body.name }), - ...(req.body.description !== undefined && { description: req.body.description }), - ...(req.body.autoCapitalization !== undefined && { autoCapitalization: req.body.autoCapitalization }), - ...(req.body.hasDeleteProtection !== undefined && { hasDeleteProtection: req.body.hasDeleteProtection }) - } + metadata: req.body } }); diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgProductSelectSection/OrgProductSelectSection.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgProductSelectSection/OrgProductSelectSection.tsx index b9991d0e5..2697aeb7d 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgProductSelectSection/OrgProductSelectSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgProductSelectSection/OrgProductSelectSection.tsx @@ -1,10 +1,10 @@ import { useEffect, useState } from "react"; +import axios from "axios"; +import { createNotification } from "@app/components/notifications"; import { Switch } from "@app/components/v2"; import { useOrganization } from "@app/context"; import { useUpdateOrg } from "@app/hooks/api"; -import axios from "axios"; -import { createNotification } from "@app/components/notifications"; export const OrgProductSelectSection = () => { const [toggledProducts, setToggledProducts] = useState<{ diff --git a/frontend/src/pages/secret-manager/SettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx b/frontend/src/pages/secret-manager/SettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx index 111381692..8ada43347 100644 --- a/frontend/src/pages/secret-manager/SettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx +++ b/frontend/src/pages/secret-manager/SettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx @@ -4,13 +4,13 @@ import { ProjectType, ProjectVersion } from "@app/hooks/api/workspace/types"; import { AuditLogsRetentionSection } from "../AuditLogsRetentionSection"; import { AutoCapitalizationSection } from "../AutoCapitalizationSection"; -import { SecretSharingSection } from "../SecretSharingSection"; import { BackfillSecretReferenceSecretion } from "../BackfillSecretReferenceSection"; import { DeleteProjectProtection } from "../DeleteProjectProtection"; import { DeleteProjectSection } from "../DeleteProjectSection"; import { EnvironmentSection } from "../EnvironmentSection"; import { PointInTimeVersionLimitSection } from "../PointInTimeVersionLimitSection"; import { RebuildSecretIndicesSection } from "../RebuildSecretIndicesSection/RebuildSecretIndicesSection"; +import { SecretSharingSection } from "../SecretSharingSection"; import { SecretTagsSection } from "../SecretTagsSection"; export const ProjectGeneralTab = () => { diff --git a/frontend/src/pages/secret-manager/SettingsPage/components/SecretSharingSection/SecretSharingSection.tsx b/frontend/src/pages/secret-manager/SettingsPage/components/SecretSharingSection/SecretSharingSection.tsx index 3daa7dad2..837f32d3e 100644 --- a/frontend/src/pages/secret-manager/SettingsPage/components/SecretSharingSection/SecretSharingSection.tsx +++ b/frontend/src/pages/secret-manager/SettingsPage/components/SecretSharingSection/SecretSharingSection.tsx @@ -1,9 +1,10 @@ +import { useState } from "react"; + import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { Checkbox } from "@app/components/v2"; import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context"; import { useUpdateProject } from "@app/hooks/api/workspace/queries"; -import { useState } from "react"; export const SecretSharingSection = () => { const { currentWorkspace } = useWorkspace(); From e9e1f4ff5db952647852dfa8a181051c44ff6d78 Mon Sep 17 00:00:00 2001 From: x032205 Date: Tue, 20 May 2025 16:53:58 -0400 Subject: [PATCH 5/6] final touches --- backend/src/ee/services/license/license-fns.ts | 4 ++-- backend/src/services/certificate/certificate-service.ts | 2 +- .../OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index 365aafa6c..b7ae6f7ee 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -26,8 +26,8 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ customRateLimits: false, customAlerts: false, secretAccessInsights: false, - auditLogs: true, - auditLogsRetentionDays: 3, + auditLogs: false, + auditLogsRetentionDays: 0, auditLogStreams: false, auditLogStreamLimit: 3, samlSSO: false, diff --git a/backend/src/services/certificate/certificate-service.ts b/backend/src/services/certificate/certificate-service.ts index 292b5f109..be3f8677e 100644 --- a/backend/src/services/certificate/certificate-service.ts +++ b/backend/src/services/certificate/certificate-service.ts @@ -8,6 +8,7 @@ import { ProjectPermissionCertificateActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; +import { NotFoundError } from "@app/lib/errors"; import { TCertificateBodyDALFactory } from "@app/services/certificate/certificate-body-dal"; import { TCertificateDALFactory } from "@app/services/certificate/certificate-dal"; import { TCertificateAuthorityCertDALFactory } from "@app/services/certificate-authority/certificate-authority-cert-dal"; @@ -29,7 +30,6 @@ import { TGetCertPrivateKeyDTO, TRevokeCertDTO } from "./certificate-types"; -import { NotFoundError } from "@app/lib/errors"; type TCertificateServiceFactoryDep = { certificateDAL: Pick; diff --git a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx index e0d88a082..d65b76b16 100644 --- a/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx +++ b/frontend/src/pages/organization/SecretSharingSettingsPage/components/OrgSecretShareLimitSection/OrgSecretShareLimitSection.tsx @@ -1,7 +1,7 @@ +import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; -import { useEffect } from "react"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; From 73c6c076e837a1476158dc6136bb5b90a062f308 Mon Sep 17 00:00:00 2001 From: x032205 Date: Fri, 23 May 2025 13:18:56 -0400 Subject: [PATCH 6/6] Review fixes --- backend/src/ee/services/audit-log/audit-log-types.ts | 6 +++--- backend/src/server/routes/v1/project-router.ts | 5 +---- backend/src/server/routes/v2/project-router.ts | 10 +++++----- 3 files changed, 9 insertions(+), 12 deletions(-) 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 172bf3b4e..e4874619b 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -2936,7 +2936,7 @@ interface OrgUpdateEvent { interface ProjectCreateEvent { type: EventType.CREATE_PROJECT; metadata: { - projectName: string; + name: string; slug?: string; type: ProjectType; }; @@ -2959,8 +2959,8 @@ interface ProjectUpdateEvent { interface ProjectDeleteEvent { type: EventType.DELETE_PROJECT; metadata: { - projectId: string; - projectName: string; + id: string; + name: string; }; } diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index 8a53a648d..651faede4 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -270,10 +270,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId, event: { type: EventType.DELETE_PROJECT, - metadata: { - projectId: workspace.id, - projectName: workspace.name - } + metadata: workspace } }); diff --git a/backend/src/server/routes/v2/project-router.ts b/backend/src/server/routes/v2/project-router.ts index b4d48e4f3..00cd69329 100644 --- a/backend/src/server/routes/v2/project-router.ts +++ b/backend/src/server/routes/v2/project-router.ts @@ -212,7 +212,10 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.CREATE_PROJECT, - metadata: req.body + metadata: { + ...req.body, + name: req.body.projectName + } } }); @@ -264,10 +267,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: project.id, event: { type: EventType.DELETE_PROJECT, - metadata: { - projectId: project.id, - projectName: project.name - } + metadata: project } });