diff --git a/packages/@n8n/config/src/configs/external-secrets.ts b/packages/@n8n/config/src/configs/external-secrets.ts new file mode 100644 index 000000000..a5310d675 --- /dev/null +++ b/packages/@n8n/config/src/configs/external-secrets.ts @@ -0,0 +1,12 @@ +import { Config, Env } from '../decorators'; + +@Config +export class ExternalSecretsConfig { + /** How often (in seconds) to check for secret updates */ + @Env('N8N_EXTERNAL_SECRETS_UPDATE_INTERVAL') + readonly updateInterval: number = 300; + + /** Whether to prefer GET over LIST when fetching secrets from Hashicorp Vault */ + @Env('N8N_EXTERNAL_SECRETS_PREFER_GET') + readonly preferGet: boolean = false; +} diff --git a/packages/@n8n/config/src/index.ts b/packages/@n8n/config/src/index.ts index 6a1bf97bd..d2c8fd323 100644 --- a/packages/@n8n/config/src/index.ts +++ b/packages/@n8n/config/src/index.ts @@ -4,6 +4,7 @@ import { DatabaseConfig } from './configs/database'; import { EmailConfig } from './configs/email'; import { VersionNotificationsConfig } from './configs/version-notifications'; import { PublicApiConfig } from './configs/public-api'; +import { ExternalSecretsConfig } from './configs/external-secrets'; @Config class UserManagementConfig { @@ -27,4 +28,7 @@ export class GlobalConfig { @Nested publicApi: PublicApiConfig; + + @Nested + externalSecrets: ExternalSecretsConfig; } diff --git a/packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts b/packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts index b49821674..40ca21b93 100644 --- a/packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts +++ b/packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts @@ -1,9 +1,10 @@ import { License } from '@/License'; -import config from '@/config'; +import { GlobalConfig } from '@n8n/config'; import Container from 'typedi'; -export const updateIntervalTime = () => config.getEnv('externalSecrets.updateInterval') * 1000; -export const preferGet = () => config.getEnv('externalSecrets.preferGet'); +export const updateIntervalTime = () => + Container.get(GlobalConfig).externalSecrets.updateInterval * 1000; +export const preferGet = () => Container.get(GlobalConfig).externalSecrets.preferGet; export function isExternalSecretsEnabled() { const license = Container.get(License); diff --git a/packages/cli/src/config/schema.ts b/packages/cli/src/config/schema.ts index 27a3b01f5..3079db91a 100644 --- a/packages/cli/src/config/schema.ts +++ b/packages/cli/src/config/schema.ts @@ -763,21 +763,6 @@ export const schema = { }, }, - externalSecrets: { - updateInterval: { - format: Number, - default: 300, - env: 'N8N_EXTERNAL_SECRETS_UPDATE_INTERVAL', - doc: 'How often (in seconds) to check for secret updates.', - }, - preferGet: { - format: Boolean, - default: false, - env: 'N8N_EXTERNAL_SECRETS_PREFER_GET', - doc: 'Whether to prefer GET over LIST when fetching secrets from Hashicorp Vault.', - }, - }, - deployment: { type: { format: String,