From 36e1a20c03476fe7139982b46f86957ec8d2ba5c Mon Sep 17 00:00:00 2001 From: Michael Drury Date: Thu, 15 Feb 2024 13:45:08 +0000 Subject: [PATCH] Revert "Revert "Fix updating users via cross-service comms (public API)"" --- .../server/src/utilities/workerRequests.ts | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/server/src/utilities/workerRequests.ts b/packages/server/src/utilities/workerRequests.ts index 69ce58c8a9..5612084216 100644 --- a/packages/server/src/utilities/workerRequests.ts +++ b/packages/server/src/utilities/workerRequests.ts @@ -14,12 +14,23 @@ export function request(ctx?: Ctx, request?: any) { if (!request.headers) { request.headers = {} } + if (!ctx) { request.headers[constants.Header.API_KEY] = coreEnv.INTERNAL_API_KEY - if (tenancy.isTenantIdSet()) { - request.headers[constants.Header.TENANT_ID] = tenancy.getTenantId() + } else if (ctx.headers) { + // copy all Budibase utilised headers over - copying everything can have + // side effects like requests being rejected due to odd content types etc + for (let header of Object.values(constants.Header)) { + if (ctx.headers[header]) { + request.headers[header] = ctx.headers[header] + } } } + + // apply tenancy if its available + if (tenancy.isTenantIdSet()) { + request.headers[constants.Header.TENANT_ID] = tenancy.getTenantId() + } if (request.body && Object.keys(request.body).length > 0) { request.headers["Content-Type"] = "application/json" request.body = @@ -29,9 +40,6 @@ export function request(ctx?: Ctx, request?: any) { } else { delete request.body } - if (ctx && ctx.headers) { - request.headers = ctx.headers - } // add x-budibase-correlation-id header logging.correlation.setHeader(request.headers) @@ -54,7 +62,7 @@ async function checkResponse( } const msg = `Unable to ${errorMsg} - ${responseErrorMessage}` if (ctx) { - ctx.throw(msg, response.status) + ctx.throw(response.status || 500, msg) } else { throw msg }