diff --git a/services/workflows-service/prisma/data-migrations b/services/workflows-service/prisma/data-migrations index 537aece50e..6def4e1235 160000 --- a/services/workflows-service/prisma/data-migrations +++ b/services/workflows-service/prisma/data-migrations @@ -1 +1 @@ -Subproject commit 537aece50e80611faf0a2245f758dc40ff2e6f63 +Subproject commit 6def4e12358d52f84ff92e083547b63b89d89393 diff --git a/services/workflows-service/src/env.ts b/services/workflows-service/src/env.ts index c104bb824d..4d63c817b3 100644 --- a/services/workflows-service/src/env.ts +++ b/services/workflows-service/src/env.ts @@ -85,6 +85,10 @@ export const serverEnvSchema = { .optional() .default('/dev/customers/') .describe('AWS Secrets Manager prefix'), + + IN_MEMORY_SECRET_ACQUIRER_ID: z.string().optional(), + IN_MEMORY_SECRET_PRIVATE_KEY: z.string().optional(), + IN_MEMORY_SECRET_CONSUMER_KEY: z.string().optional(), }; if (!process.env['ENVIRONMENT_NAME'] || process.env['ENVIRONMENT_NAME'] === 'local') { diff --git a/services/workflows-service/src/secrets-manager/in-memory-secrets-manager.ts b/services/workflows-service/src/secrets-manager/in-memory-secrets-manager.ts index e36957361d..87e84ad10f 100644 --- a/services/workflows-service/src/secrets-manager/in-memory-secrets-manager.ts +++ b/services/workflows-service/src/secrets-manager/in-memory-secrets-manager.ts @@ -1,4 +1,18 @@ import { SecretsManager } from '@/secrets-manager/secrets-manager'; +import { env } from '@/env'; +import { camelCase } from 'lodash'; + +const inMemoryEnvProvidedSecrets = Object.entries(env).reduce((acc, [key, value]) => { + if (!key.startsWith('IN_MEMORY_SECRET_')) { + return acc; + } + + const secretKey = key.replace('IN_MEMORY_SECRET_', ''); + + acc[camelCase(secretKey)] = value; + + return acc; +}, {} as Record); const secretsStore: Record> = {}; @@ -10,7 +24,18 @@ export class InMemorySecretsManager implements SecretsManager { } async getAll() { - return secretsStore[this.customerId] || {}; + let secrets = secretsStore[this.customerId] || {}; + + if (env.ENVIRONMENT_NAME !== 'local') { + return secrets; + } + + secrets = { + ...inMemoryEnvProvidedSecrets, + ...secrets, + }; + + return secrets; } async set(data: Record) {