From 449167b17db1e086eea8be5740316f8494bae516 Mon Sep 17 00:00:00 2001 From: olav Date: Tue, 16 Aug 2022 14:05:29 +0200 Subject: [PATCH] refactor: add an experimental flag for the embedded proxy --- src/lib/experimental.ts | 1 + src/lib/middleware/api-token-middleware.ts | 6 ++++-- src/lib/routes/index.ts | 8 +++++++- src/server-dev.ts | 1 + src/test/config/test-config.ts | 1 + 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lib/experimental.ts b/src/lib/experimental.ts index 31de42a260..1ef05fa259 100644 --- a/src/lib/experimental.ts +++ b/src/lib/experimental.ts @@ -3,6 +3,7 @@ export interface IExperimentalOptions { clientFeatureMemoize?: IExperimentalToggle; userGroups?: boolean; anonymiseEventLog?: boolean; + embedProxy?: boolean; } export interface IExperimentalToggle { diff --git a/src/lib/middleware/api-token-middleware.ts b/src/lib/middleware/api-token-middleware.ts index 5f5a71a2cd..10740c149f 100644 --- a/src/lib/middleware/api-token-middleware.ts +++ b/src/lib/middleware/api-token-middleware.ts @@ -17,7 +17,8 @@ const apiAccessMiddleware = ( { getLogger, authentication, - }: Pick, + experimental, + }: Pick, { apiTokenService }: any, ): any => { const logger = getLogger('/middleware/api-token.ts'); @@ -40,7 +41,8 @@ const apiAccessMiddleware = ( if (apiUser) { if ( (apiUser.type === CLIENT && !isClientApi(req)) || - (apiUser.type === PROXY && !isProxyApi(req)) + (apiUser.type === PROXY && !isProxyApi(req)) || + (apiUser.type === PROXY && !experimental.embedProxy) ) { res.status(403).send({ message: TOKEN_TYPE_ERROR_MESSAGE }); return; diff --git a/src/lib/routes/index.ts b/src/lib/routes/index.ts index 02dae65fdb..410590c49a 100644 --- a/src/lib/routes/index.ts +++ b/src/lib/routes/index.ts @@ -27,7 +27,13 @@ class IndexRouter extends Controller { ); this.use('/api/admin', new AdminApi(config, services).router); this.use('/api/client', new ClientApi(config, services).router); - this.use('/api/frontend', new ProxyController(config, services).router); + + if (config.experimental.embedProxy) { + this.use( + '/api/frontend', + new ProxyController(config, services).router, + ); + } } } diff --git a/src/server-dev.ts b/src/server-dev.ts index bb95b58a9c..547dd9a40a 100644 --- a/src/server-dev.ts +++ b/src/server-dev.ts @@ -34,6 +34,7 @@ process.nextTick(async () => { metricsV2: { enabled: true }, anonymiseEventLog: false, userGroups: true, + embedProxy: true, }, authentication: { initApiTokens: [ diff --git a/src/test/config/test-config.ts b/src/test/config/test-config.ts index 16ebdd703a..6c6cbb2699 100644 --- a/src/test/config/test-config.ts +++ b/src/test/config/test-config.ts @@ -24,6 +24,7 @@ export function createTestConfig(config?: IUnleashOptions): IUnleashConfig { }, experimental: { userGroups: true, + embedProxy: true, }, }; const options = mergeAll([testConfig, config]);