From 312c01a8793515195a8437cfc924bd49224b3c1d Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Tue, 28 Feb 2023 10:36:00 +0000 Subject: [PATCH] Prefer default config for google sheets in cloud, don't use env vars for regular auth --- packages/backend-core/src/configs/configs.ts | 22 ++++++++++++++++--- .../middleware/passport/datasource/google.ts | 3 ++- .../server/src/integrations/googlesheets.ts | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/backend-core/src/configs/configs.ts b/packages/backend-core/src/configs/configs.ts index 882c37ceb9..b46eef6834 100644 --- a/packages/backend-core/src/configs/configs.ts +++ b/packages/backend-core/src/configs/configs.ts @@ -154,11 +154,27 @@ export async function getGoogleConfig(): Promise< GoogleInnerConfig | undefined > { const config = await getGoogleConfigDoc() - if (config) { - return config.config + return config?.config +} + +export async function getGoogleDatasourceConfig(): Promise { + if (!env.SELF_HOSTED) { + // always use the env vars in cloud + return getDefaultGoogleConfig() } - // Use google fallback configuration from env variables + // prefer the config in self-host + let config = await getGoogleConfig() + + // fallback to env vars + if (!config || !config.activated) { + config = getDefaultGoogleConfig() + } + + return config +} + +export function getDefaultGoogleConfig(): GoogleInnerConfig | undefined { if (environment.GOOGLE_CLIENT_ID && environment.GOOGLE_CLIENT_SECRET) { return { clientID: environment.GOOGLE_CLIENT_ID!, diff --git a/packages/backend-core/src/middleware/passport/datasource/google.ts b/packages/backend-core/src/middleware/passport/datasource/google.ts index ff5224e437..32451cb8d2 100644 --- a/packages/backend-core/src/middleware/passport/datasource/google.ts +++ b/packages/backend-core/src/middleware/passport/datasource/google.ts @@ -12,7 +12,8 @@ type Passport = { } async function fetchGoogleCreds() { - const config = await configs.getGoogleConfig() + let config = await configs.getGoogleDatasourceConfig() + if (!config) { throw new Error("No google configuration found") } diff --git a/packages/server/src/integrations/googlesheets.ts b/packages/server/src/integrations/googlesheets.ts index 2b54123bdb..290509eb4a 100644 --- a/packages/server/src/integrations/googlesheets.ts +++ b/packages/server/src/integrations/googlesheets.ts @@ -172,7 +172,7 @@ class GoogleSheetsIntegration implements DatasourcePlus { async connect() { try { // Initialise oAuth client - let googleConfig = await configs.getGoogleConfig() + let googleConfig = await configs.getGoogleDatasourceConfig() if (!googleConfig) { throw new HTTPError("Google config not found", 400) }