From 689065d2b87e43563c31fe7f5cd4811c3ff0e29e Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Tue, 14 Sep 2021 14:18:13 +0100 Subject: [PATCH] Redirect to account portal login page in the cloud --- hosting/docker-compose.yaml | 1 + .../budibase/templates/worker-service-deployment.yaml | 2 ++ hosting/kubernetes/budibase/values.yaml | 1 + packages/builder/src/pages/builder/auth/login.svelte | 6 ++++++ packages/builder/src/stores/portal/admin.js | 10 +++++++--- packages/worker/scripts/dev/manage.js | 1 + .../controllers/system/{flags.js => environment.js} | 3 ++- packages/worker/src/api/index.js | 2 +- packages/worker/src/api/routes/index.js | 4 ++-- packages/worker/src/api/routes/system/environment.js | 8 ++++++++ packages/worker/src/api/routes/system/flags.js | 8 -------- packages/worker/src/environment.js | 1 + 12 files changed, 32 insertions(+), 15 deletions(-) rename packages/worker/src/api/controllers/system/{flags.js => environment.js} (61%) create mode 100644 packages/worker/src/api/routes/system/environment.js delete mode 100644 packages/worker/src/api/routes/system/flags.js diff --git a/hosting/docker-compose.yaml b/hosting/docker-compose.yaml index 560b273668..229396dacb 100644 --- a/hosting/docker-compose.yaml +++ b/hosting/docker-compose.yaml @@ -51,6 +51,7 @@ services: INTERNAL_API_KEY: ${INTERNAL_API_KEY} REDIS_URL: redis-service:6379 REDIS_PASSWORD: ${REDIS_PASSWORD} + ACCOUNT_PORTAL_URL: https://portal.budi.live volumes: - ./logs:/logs depends_on: diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 703d59c075..6c165872c8 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -87,6 +87,8 @@ spec: {{ end }} - name: SELF_HOSTED value: {{ .Values.globals.selfHosted | quote }} + - name: ACCOUNT_PORTAL_URL + value: {{ .Values.globals.accountPortalUrl | quote }} image: budibase/worker imagePullPolicy: Always name: bbworker diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index 30594f95e3..6a9d84c0b0 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -89,6 +89,7 @@ globals: sentryDSN: "" logLevel: info selfHosted: 1 + accountPortalUrL: "" createSecrets: true # creates an internal API key, JWT secrets and redis password for you # if createSecrets is set to false, you can hard-code your secrets here diff --git a/packages/builder/src/pages/builder/auth/login.svelte b/packages/builder/src/pages/builder/auth/login.svelte index 783e5a4903..c46550b69f 100644 --- a/packages/builder/src/pages/builder/auth/login.svelte +++ b/packages/builder/src/pages/builder/auth/login.svelte @@ -51,6 +51,12 @@ onMount(async () => { await organisation.init() + + // redirect to account portal for login in the cloud + if ($admin.cloud && $admin.accountPortalUrl) { + window.location.href = $admin.accountPortalUrl + } + loaded = true }) diff --git a/packages/builder/src/stores/portal/admin.js b/packages/builder/src/stores/portal/admin.js index 439437076e..44ff63a082 100644 --- a/packages/builder/src/stores/portal/admin.js +++ b/packages/builder/src/stores/portal/admin.js @@ -7,6 +7,7 @@ export function createAdminStore() { loaded: false, multiTenancy: false, cloud: false, + accountPortalUrl: "", onboardingProgress: 0, checklist: { apps: { checked: false }, @@ -28,7 +29,7 @@ export function createAdminStore() { const totalSteps = Object.keys(json).length const completedSteps = Object.values(json).filter(x => x?.checked).length - await getFlags() + await getEnvironment() admin.update(store => { store.loaded = true store.checklist = json @@ -43,20 +44,23 @@ export function createAdminStore() { } } - async function getFlags() { + async function getEnvironment() { let multiTenancyEnabled = false let cloud = false + let accountPortalUrl = "" try { - const response = await api.get(`/api/system/flags`) + const response = await api.get(`/api/system/environment`) const json = await response.json() multiTenancyEnabled = json.multiTenancy cloud = json.cloud + accountPortalUrl = json.accountPortalUrl } catch (err) { // just let it stay disabled } admin.update(store => { store.multiTenancy = multiTenancyEnabled store.cloud = cloud + store.accountPortalUrl = accountPortalUrl return store }) } diff --git a/packages/worker/scripts/dev/manage.js b/packages/worker/scripts/dev/manage.js index 3879bbeaae..f9a931110e 100644 --- a/packages/worker/scripts/dev/manage.js +++ b/packages/worker/scripts/dev/manage.js @@ -21,6 +21,7 @@ async function init() { COUCH_DB_PASSWORD: "budibase", // empty string is false MULTI_TENANCY: "", + ACCOUNT_PORTAL_URL: "http://localhost:3001", } let envFile = "" Object.keys(envFileJson).forEach(key => { diff --git a/packages/worker/src/api/controllers/system/flags.js b/packages/worker/src/api/controllers/system/environment.js similarity index 61% rename from packages/worker/src/api/controllers/system/flags.js rename to packages/worker/src/api/controllers/system/environment.js index 81f6b56105..305ccd7937 100644 --- a/packages/worker/src/api/controllers/system/flags.js +++ b/packages/worker/src/api/controllers/system/environment.js @@ -3,6 +3,7 @@ const env = require("../../../environment") exports.fetch = async ctx => { ctx.body = { multiTenancy: !!env.MULTI_TENANCY, - cloud: !!env.SELF_HOSTED, + cloud: !(env.SELF_HOSTED === "1"), + accountPortalUrl: env.ACCOUNT_PORTAL_URL, } } diff --git a/packages/worker/src/api/index.js b/packages/worker/src/api/index.js index 8abead022e..03e782688e 100644 --- a/packages/worker/src/api/index.js +++ b/packages/worker/src/api/index.js @@ -44,7 +44,7 @@ const PUBLIC_ENDPOINTS = [ method: "POST", }, { - route: "api/system/flags", + route: "api/system/environment", method: "GET", }, { diff --git a/packages/worker/src/api/routes/index.js b/packages/worker/src/api/routes/index.js index a4ed4d7da4..3d2d770408 100644 --- a/packages/worker/src/api/routes/index.js +++ b/packages/worker/src/api/routes/index.js @@ -6,7 +6,7 @@ const emailRoutes = require("./global/email") const authRoutes = require("./global/auth") const roleRoutes = require("./global/roles") const sessionRoutes = require("./global/sessions") -const flagRoutes = require("./system/flags") +const environmentRoutes = require("./system/environment") const tenantsRoutes = require("./system/tenants") const appRoutes = require("./app") @@ -21,5 +21,5 @@ exports.routes = [ emailRoutes, sessionRoutes, roleRoutes, - flagRoutes, + environmentRoutes, ] diff --git a/packages/worker/src/api/routes/system/environment.js b/packages/worker/src/api/routes/system/environment.js new file mode 100644 index 0000000000..9b1b85638f --- /dev/null +++ b/packages/worker/src/api/routes/system/environment.js @@ -0,0 +1,8 @@ +const Router = require("@koa/router") +const controller = require("../../controllers/system/environment") + +const router = Router() + +router.get("/api/system/environment", controller.fetch) + +module.exports = router diff --git a/packages/worker/src/api/routes/system/flags.js b/packages/worker/src/api/routes/system/flags.js deleted file mode 100644 index f2f5c5712f..0000000000 --- a/packages/worker/src/api/routes/system/flags.js +++ /dev/null @@ -1,8 +0,0 @@ -const Router = require("@koa/router") -const controller = require("../../controllers/system/flags") - -const router = Router() - -router.get("/api/system/flags", controller.fetch) - -module.exports = router diff --git a/packages/worker/src/environment.js b/packages/worker/src/environment.js index c42bc087e8..12113c087c 100644 --- a/packages/worker/src/environment.js +++ b/packages/worker/src/environment.js @@ -32,6 +32,7 @@ module.exports = { REDIS_PASSWORD: process.env.REDIS_PASSWORD, INTERNAL_API_KEY: process.env.INTERNAL_API_KEY, MULTI_TENANCY: process.env.MULTI_TENANCY, + ACCOUNT_PORTAL_URL: process.env.ACCOUNT_PORTAL_URL, _set(key, value) { process.env[key] = value module.exports[key] = value