diff --git a/.github/workflows/release-develop.yml b/.github/workflows/release-develop.yml
index 503fc53194..9bb37d7356 100644
--- a/.github/workflows/release-develop.yml
+++ b/.github/workflows/release-develop.yml
@@ -60,7 +60,7 @@ jobs:
node scripts/syncLocalDependencies.js $version
echo "Syncing yarn workspace"
yarn
- - run: yarn build --configuration=production
+ - run: yarn build
- run: yarn build:sdk
- name: Publish budibase packages to NPM
diff --git a/.github/workflows/release-master.yml b/.github/workflows/release-master.yml
index a4e679e7bf..a105d8a712 100644
--- a/.github/workflows/release-master.yml
+++ b/.github/workflows/release-master.yml
@@ -54,7 +54,7 @@ jobs:
echo "Syncing yarn workspace"
yarn
- run: yarn lint
- - run: yarn build --configuration=production
+ - run: yarn build
- run: yarn build:sdk
- name: Publish budibase packages to NPM
diff --git a/hosting/single/Dockerfile b/hosting/single/Dockerfile
index 64a6b01365..b65cdc9939 100644
--- a/hosting/single/Dockerfile
+++ b/hosting/single/Dockerfile
@@ -11,12 +11,14 @@ RUN chmod +x /cleanup.sh
# build server
WORKDIR /app
ADD packages/server .
-RUN yarn install --frozen-lockfile --production=true && /cleanup.sh
+COPY yarn.lock .
+RUN yarn install --production=true && /cleanup.sh
# build worker
WORKDIR /worker
ADD packages/worker .
-RUN yarn install --frozen-lockfile --production=true && /cleanup.sh
+COPY yarn.lock .
+RUN yarn install --production=true && /cleanup.sh
FROM budibase/couchdb
ARG TARGETARCH
diff --git a/lerna.json b/lerna.json
index 338a4590e7..f5cff9d16e 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "2.7.1",
+ "version": "2.7.4",
"npmClient": "yarn",
"packages": [
"packages/backend-core",
diff --git a/package.json b/package.json
index ffb3fa775a..56f015f8c0 100644
--- a/package.json
+++ b/package.json
@@ -52,7 +52,7 @@
"dev:noserver": "yarn run kill-builder && lerna run --stream dev:stack:up && lerna run --stream --parallel dev:builder --ignore @budibase/backend-core --ignore @budibase/server --ignore @budibase/worker",
"dev:server": "yarn run kill-server && lerna run --stream --parallel dev:builder --scope @budibase/worker --scope @budibase/server",
"dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream --parallel dev:built",
- "dev:docker": "yarn build && docker-compose -f hosting/docker-compose.build.yaml -f hosting/docker-compose.dev.yaml --env-file hosting/.env up --build --scale proxy-service=0",
+ "dev:docker": "yarn build:docker:pre && docker-compose -f hosting/docker-compose.build.yaml -f hosting/docker-compose.dev.yaml --env-file hosting/.env up --build --scale proxy-service=0",
"test": "lerna run --stream test --stream",
"lint:eslint": "eslint packages && eslint qa-core",
"lint:prettier": "prettier --check \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\" && prettier --check \"qa-core/**/*.{js,ts,svelte}\"",
@@ -62,7 +62,7 @@
"lint:fix": "yarn run lint:fix:prettier && yarn run lint:fix:eslint",
"build:specs": "lerna run --stream specs",
"build:docker": "lerna run --stream build:docker && yarn build:docker:proxy && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh $BUDIBASE_RELEASE_VERSION && cd -",
- "build:docker:pre": "lerna run --stream build && lerna run --stream predocker",
+ "build:docker:pre": "yarn build && lerna run --stream predocker",
"build:docker:proxy": "docker build hosting/proxy -t proxy-service",
"build:docker:selfhost": "lerna run --stream build:docker && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh latest && cd -",
"build:docker:develop": "node scripts/pinVersions && lerna run --stream build:docker && yarn build:docker:proxy && cd hosting/scripts/linux/ && ./release-to-docker-hub.sh develop && cd -",
diff --git a/packages/backend-core/src/middleware/passport/datasource/google.ts b/packages/backend-core/src/middleware/passport/datasource/google.ts
index 2f91e01d9a..6fd4e9ff32 100644
--- a/packages/backend-core/src/middleware/passport/datasource/google.ts
+++ b/packages/backend-core/src/middleware/passport/datasource/google.ts
@@ -1,10 +1,10 @@
import * as google from "../sso/google"
import { Cookie } from "../../../constants"
import { clearCookie, getCookie } from "../../../utils"
+import { doWithDB } from "../../../db"
import * as configs from "../../../configs"
-import { BBContext, SSOProfile } from "@budibase/types"
+import { BBContext, Database, SSOProfile } from "@budibase/types"
import { ssoSaveUserNoOp } from "../sso/sso"
-import { cache, utils } from "../../../"
const GoogleStrategy = require("passport-google-oauth").OAuth2Strategy
type Passport = {
@@ -36,8 +36,8 @@ export async function preAuth(
ssoSaveUserNoOp
)
- if (!ctx.query.appId) {
- ctx.throw(400, "appId query param not present.")
+ if (!ctx.query.appId || !ctx.query.datasourceId) {
+ ctx.throw(400, "appId and datasourceId query params not present.")
}
return passport.authenticate(strategy, {
@@ -69,7 +69,7 @@ export async function postAuth(
(
accessToken: string,
refreshToken: string,
- _profile: SSOProfile,
+ profile: SSOProfile,
done: Function
) => {
clearCookie(ctx, Cookie.DatasourceAuth)
@@ -79,16 +79,23 @@ export async function postAuth(
{ successRedirect: "/", failureRedirect: "/error" },
async (err: any, tokens: string[]) => {
const baseUrl = `/builder/app/${authStateCookie.appId}/data`
-
- const id = utils.newid()
- await cache.store(
- `datasource:creation:${authStateCookie.appId}:google:${id}`,
- {
- tokens,
+ // update the DB for the datasource with all the user info
+ await doWithDB(authStateCookie.appId, async (db: Database) => {
+ let datasource
+ try {
+ datasource = await db.get(authStateCookie.datasourceId)
+ } catch (err: any) {
+ if (err.status === 404) {
+ ctx.redirect(baseUrl)
+ }
}
- )
-
- ctx.redirect(`${baseUrl}/new?continue_google_setup=${id}`)
+ if (!datasource.config) {
+ datasource.config = {}
+ }
+ datasource.config.auth = { type: "google", ...tokens }
+ await db.put(datasource)
+ ctx.redirect(`${baseUrl}/datasource/${authStateCookie.datasourceId}`)
+ })
}
)(ctx, next)
}
diff --git a/packages/builder/src/components/backend/DatasourceNavigator/_components/GoogleButton.svelte b/packages/builder/src/components/backend/DatasourceNavigator/_components/GoogleButton.svelte
index ceb8fd7f4b..b7d70d88b7 100644
--- a/packages/builder/src/components/backend/DatasourceNavigator/_components/GoogleButton.svelte
+++ b/packages/builder/src/components/backend/DatasourceNavigator/_components/GoogleButton.svelte
@@ -3,6 +3,8 @@
import { store } from "builderStore"
import { auth } from "stores/portal"
+ export let preAuthStep
+ export let datasource
export let disabled
export let samePage
@@ -13,8 +15,18 @@
class:disabled
{disabled}
on:click={async () => {
+ let ds = datasource
let appId = $store.appId
- const url = `/api/global/auth/${tenantId}/datasource/google?appId=${appId}`
+ if (!ds) {
+ const resp = await preAuthStep()
+ if (resp.datasource && resp.appId) {
+ ds = resp.datasource
+ appId = resp.appId
+ } else {
+ ds = resp
+ }
+ }
+ const url = `/api/global/auth/${tenantId}/datasource/google?datasourceId=${ds._id}&appId=${appId}`
if (samePage) {
window.location = url
} else {
diff --git a/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte b/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte
index 7b4808967d..0783a9fe53 100644
--- a/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte
+++ b/packages/builder/src/components/backend/DatasourceNavigator/modals/GoogleDatasourceConfigModal.svelte
@@ -1,110 +1,43 @@
- {#if step === GoogleDatasouceConfigStep.AUTH}
-
- {#if isGoogleConfigured === true}
-
- Authenticate with your google account to use the {integrationName} integration.
-
-
- {:else if isGoogleConfigured === false}
+
+ {#if isGoogleConfigured === true}
+
Google authentication is not enabled, please complete Google SSO
- configuration.Authenticate with your google account to use the {IntegrationNames[
+ datasource.type
+ ]} integration.