diff --git a/lerna.json b/lerna.json index 9b60edda09..a6309f4420 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.4.42-alpha.1", + "version": "2.4.42-alpha.4", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 878080beb7..fd7a416125 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.4.42-alpha.1", + "version": "2.4.42-alpha.4", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.2", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.4.42-alpha.1", + "@budibase/types": "2.4.42-alpha.4", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/backend-core/src/configs/configs.ts b/packages/backend-core/src/configs/configs.ts index 79fd409308..c279babb71 100644 --- a/packages/backend-core/src/configs/configs.ts +++ b/packages/backend-core/src/configs/configs.ts @@ -32,8 +32,7 @@ export async function getConfig( const db = context.getGlobalDB() try { // await to catch error - const config = (await db.get(generateConfigID(type))) as T - return config + return (await db.get(generateConfigID(type))) as T } catch (e: any) { if (e.status === 404) { return @@ -162,7 +161,10 @@ export async function getGoogleConfig(): Promise< export async function getGoogleDatasourceConfig(): Promise< GoogleInnerConfig | undefined > { - return getDefaultGoogleConfig() + if (!env.SELF_HOSTED) { + // always use the env vars in cloud + return getDefaultGoogleConfig() + } // prefer the config in self-host let config = await getGoogleConfig() @@ -176,14 +178,13 @@ export async function getGoogleDatasourceConfig(): Promise< } export function getDefaultGoogleConfig(): GoogleInnerConfig | undefined { - //if (environment.GOOGLE_CLIENT_ID && environment.GOOGLE_CLIENT_SECRET) { - return { - clientID: - "77746844610-62k43m9b4so4gcmf6ibs7p3l7jv81rug.apps.googleusercontent.com", - clientSecret: "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", - activated: true, + if (environment.GOOGLE_CLIENT_ID && environment.GOOGLE_CLIENT_SECRET) { + return { + clientID: environment.GOOGLE_CLIENT_ID!, + clientSecret: environment.GOOGLE_CLIENT_SECRET!, + activated: true, + } } - //} } // OIDC diff --git a/packages/backend-core/src/configs/tests/configs.spec.ts b/packages/backend-core/src/configs/tests/configs.spec.ts index 079f2ab681..45e56a2581 100644 --- a/packages/backend-core/src/configs/tests/configs.spec.ts +++ b/packages/backend-core/src/configs/tests/configs.spec.ts @@ -1,4 +1,9 @@ -import { DBTestConfiguration, generator, testEnv } from "../../../tests" +import { + DBTestConfiguration, + generator, + testEnv, + structures, +} from "../../../tests" import { ConfigType } from "@budibase/types" import env from "../../environment" import * as configs from "../configs" @@ -113,4 +118,71 @@ describe("configs", () => { }) }) }) + + describe("getGoogleDatasourceConfig", () => { + function setEnvVars() { + env.GOOGLE_CLIENT_SECRET = "test" + env.GOOGLE_CLIENT_ID = "test" + } + + function unsetEnvVars() { + env.GOOGLE_CLIENT_SECRET = undefined + env.GOOGLE_CLIENT_ID = undefined + } + + describe("cloud", () => { + beforeEach(() => { + testEnv.cloudHosted() + }) + + it("returns from env vars", async () => { + await config.doInTenant(async () => { + setEnvVars() + const config = await configs.getGoogleDatasourceConfig() + unsetEnvVars() + + expect(config).toEqual({ + activated: true, + clientID: "test", + clientSecret: "test", + }) + }) + }) + + it("returns undefined when no env vars are configured", async () => { + await config.doInTenant(async () => { + const config = await configs.getGoogleDatasourceConfig() + expect(config).toBeUndefined() + }) + }) + }) + + describe("self host", () => { + beforeEach(() => { + testEnv.selfHosted() + }) + + it("returns from config", async () => { + await config.doInTenant(async () => { + const googleDoc = structures.sso.googleConfigDoc() + await configs.save(googleDoc) + const config = await configs.getGoogleDatasourceConfig() + expect(config).toEqual(googleDoc.config) + }) + }) + + it("falls back to env vars when config is disabled", async () => { + await config.doInTenant(async () => { + setEnvVars() + const config = await configs.getGoogleDatasourceConfig() + unsetEnvVars() + expect(config).toEqual({ + activated: true, + clientID: "test", + clientSecret: "test", + }) + }) + }) + }) + }) }) diff --git a/packages/backend-core/tests/utilities/structures/sso.ts b/packages/backend-core/tests/utilities/structures/sso.ts index 7413fa3c09..9da9c82223 100644 --- a/packages/backend-core/tests/utilities/structures/sso.ts +++ b/packages/backend-core/tests/utilities/structures/sso.ts @@ -1,4 +1,6 @@ import { + ConfigType, + GoogleConfig, GoogleInnerConfig, JwtClaims, OAuth2, @@ -10,10 +12,10 @@ import { User, } from "@budibase/types" import { generator } from "./generator" -import { uuid, email } from "./common" +import { email, uuid } from "./common" import * as shared from "./shared" -import _ from "lodash" import { user } from "./shared" +import _ from "lodash" export function OAuth(): OAuth2 { return { @@ -107,3 +109,11 @@ export function googleConfig(): GoogleInnerConfig { clientSecret: generator.string(), } } + +export function googleConfigDoc(): GoogleConfig { + return { + _id: "config_google", + type: ConfigType.GOOGLE, + config: googleConfig(), + } +} diff --git a/packages/bbui/package.json b/packages/bbui/package.json index b7b4fc0f98..e65f6eda98 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.4.42-alpha.1", + "version": "2.4.42-alpha.4", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,8 +38,8 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/shared-core": "2.4.42-alpha.1", - "@budibase/string-templates": "2.4.42-alpha.1", + "@budibase/shared-core": "2.4.42-alpha.4", + "@budibase/string-templates": "2.4.42-alpha.4", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index d9bf571b19..b0ee045824 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.4.42-alpha.1", + "version": "2.4.42-alpha.4", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,11 +58,11 @@ } }, "dependencies": { - "@budibase/bbui": "2.4.42-alpha.1", - "@budibase/client": "2.4.42-alpha.1", - "@budibase/frontend-core": "2.4.42-alpha.1", - "@budibase/shared-core": "2.4.42-alpha.1", - "@budibase/string-templates": "2.4.42-alpha.1", + "@budibase/bbui": "2.4.42-alpha.4", + "@budibase/client": "2.4.42-alpha.4", + "@budibase/frontend-core": "2.4.42-alpha.4", + "@budibase/shared-core": "2.4.42-alpha.4", + "@budibase/string-templates": "2.4.42-alpha.4", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte b/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte index c12ddab78d..de9ecce778 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte @@ -12,7 +12,7 @@ // kill the reference so the input isn't saved let datasource = cloneDeep(integration) - $: isGoogleConfigured = !!$organisation.google + $: isGoogleConfigured = !!$organisation.googleDatasourceConfigured onMount(async () => { await organisation.init() diff --git a/packages/builder/src/pages/builder/_layout.svelte b/packages/builder/src/pages/builder/_layout.svelte index 010f1db5eb..a2b480f742 100644 --- a/packages/builder/src/pages/builder/_layout.svelte +++ b/packages/builder/src/pages/builder/_layout.svelte @@ -1,6 +1,6 @@