'use strict'; const proxy = require('http-proxy-middleware'); let localDevConfig = {}; try { localDevConfig = require('./devConfig'); } catch (e) {} const devConfig = Object.assign({}, require('./devConfig.defaults'), localDevConfig); let devPort = process.env.PORT || devConfig.port; let jsonConfig = { "appContextPath" : "/onboarding" }; try { jsonConfig = require('./src/sdc-app/config/config.json'); } catch (e) { console.log('could not load config. using deault value instead'); } module.exports = function (server) { let proxyConfigDefaults = { changeOrigin: true, secure: false, onProxyRes: (proxyRes, req, res) => { let setCookie = proxyRes.headers['set-cookie']; if (setCookie) { setCookie[0] = setCookie[0].replace(/\bSecure\b(; )?/, ''); } if (proxyRes.statusCode === 302 && proxyRes.headers.location.indexOf('login') > -1) { proxyRes.headers.location = `http://localhost:${devPort}/sdc1#/onboardVendor`; res.setHeader('Set-Cookie', [ 'HTTP_CSP_EMAIL=csantana@sdc.com', 'HTTP_CSP_FIRSTNAME=Carlos', 'HTTP_CSP_LASTNAME=Santana', 'HTTP_CSP_WSTYPE=Intranet', 'HTTP_IV_REMOTE_ADDRESS=0.0.0.0', 'HTTP_IV_USER=cs0008', 'USER_ID=cs0008' ]); } } }; let middlewares = [ (req, res, next) => { if (req.url.indexOf('/proxy-designer1') > -1) { req.url = req.url.replace('/proxy-designer1', ''); } if (req.url.indexOf(jsonConfig.appContextPath + '/resources') > -1) { req.url = req.url.replace(jsonConfig.appContextPath, ''); } let match = req.url.match(/^(.*)_en.js$/); let newUrl = match && match[1] + '.js'; if (newUrl) { console.log(`REWRITING URL: ${req.url} -> ${newUrl}`); req.url = newUrl; } next(); } ]; // standalon back-end (proxyTarget) has higher priority, so it should be first if (devConfig.proxyTarget) { middlewares.push( proxy(['/api', '/onboarding-api', '/sdc1/feProxy/onboarding-api'], Object.assign({}, proxyConfigDefaults, { target: devConfig.proxyTarget, pathRewrite: { '/sdc1/feProxy/onboarding-api': '/onboarding-api' } })) ); } // ATT environment (proxyATTTarget) has lower priority, so it should be second if (devConfig.proxyATTTarget) { middlewares.push( proxy(['/sdc1', '/onboarding-api', '/scripts', '/styles'], Object.assign({}, proxyConfigDefaults, { target: devConfig.proxyATTTarget, pathRewrite: { // Workaround for some weird proxy issue '/sdc1/feProxy/onboarding-api': '/sdc1/feProxy/onboarding-api', '/onboarding-api': '/sdc1/feProxy/onboarding-api' } })) ); } server.use(middlewares); };