From 57326a6e761cf8cbdeeaada07625416f31a7d9cb Mon Sep 17 00:00:00 2001 From: usingtechnology <39388115+usingtechnology@users.noreply.github.com> Date: Fri, 6 Dec 2024 09:01:09 -0800 Subject: [PATCH] FORMS-1364 CORS for production and localhost (#1533) * remove cors verify in openshift * no message * localhost cors, test on openshift * remove a console log * fix devcontainer to load components libraries, remove the unused local keycloak * Revert "fix devcontainer to load components libraries, remove the unused local keycloak" This reverts commit 7addc85f745ee41d7b22c52bf7fc0fb414570206. * need formio libraries installed Signed-off-by: Jason Sherman --------- Signed-off-by: Jason Sherman --- .devcontainer/post-install.sh | 8 ++++++-- app/src/forms/bcgeoaddress/routes.js | 8 +++++++- app/src/forms/common/constants.js | 3 +++ app/src/forms/proxy/routes.js | 7 ++++--- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.devcontainer/post-install.sh b/.devcontainer/post-install.sh index 46eec3560..143ef6943 100644 --- a/.devcontainer/post-install.sh +++ b/.devcontainer/post-install.sh @@ -8,8 +8,12 @@ CHEFS_LOCAL_DIR=${WORKSPACE_DIR}/.devcontainer/chefs_local npm install knex -g npm install jest -g -# install app libraries, prepare for app development and debugging... -cd app +# install components/formio libraries, prepare for ux development and debugging... +cd components +npm install + + # install app libraries, prepare for app development and debugging... +cd ../app npm install # install frontend libraries, prepare for ux development and debugging... diff --git a/app/src/forms/bcgeoaddress/routes.js b/app/src/forms/bcgeoaddress/routes.js index 10f2d1f33..97697ede9 100644 --- a/app/src/forms/bcgeoaddress/routes.js +++ b/app/src/forms/bcgeoaddress/routes.js @@ -1,12 +1,18 @@ +const cors = require('cors'); const routes = require('express').Router(); +const { Development } = require('../common/constants'); const controller = require('./controller'); +// need to allow cors for OPTIONS call (localhost only) +// formio component will call OPTIONS pre-flight +routes.options('/advance/address', cors({ origin: Development.LOCALHOST_ORIGIN })); + routes.get('/address', async (req, res, next) => { await controller.searchBCGeoAddress(req, res, next); }); -routes.get('/advance/address', async (req, res, next) => { +routes.get('/advance/address', cors({ origin: Development.LOCALHOST_ORIGIN }), async (req, res, next) => { await controller.advanceSearchBCGeoAddress(req, res, next); }); diff --git a/app/src/forms/common/constants.js b/app/src/forms/common/constants.js index 6cd51fbf9..c65e7e9e5 100644 --- a/app/src/forms/common/constants.js +++ b/app/src/forms/common/constants.js @@ -1,4 +1,7 @@ module.exports = Object.freeze({ + Development: { + LOCALHOST_ORIGIN: 'http://localhost:5173', + }, EmailProperties: { FROM_EMAIL: 'donotreplyCHEFS@gov.bc.ca', }, diff --git a/app/src/forms/proxy/routes.js b/app/src/forms/proxy/routes.js index 9b4043e88..a9ff790d5 100644 --- a/app/src/forms/proxy/routes.js +++ b/app/src/forms/proxy/routes.js @@ -1,15 +1,16 @@ const cors = require('cors'); const routes = require('express').Router(); +const { Development } = require('../common/constants'); const { currentUser } = require('../auth/middleware/userAccess'); const controller = require('./controller'); -// need to allow cors for OPTIONS call +// need to allow cors for OPTIONS call (localhost only) // formio component will call OPTIONS pre-flight -routes.options('/external', cors()); +routes.options('/external', cors({ origin: Development.LOCALHOST_ORIGIN })); // called with encrypted headers, no current user!!! -routes.get('/external', cors(), async (req, res, next) => { +routes.get('/external', cors({ origin: Development.LOCALHOST_ORIGIN }), async (req, res, next) => { await controller.callExternalApi(req, res, next); });