From ce429281438c92e332d8b2f8771d7e767c1fe311 Mon Sep 17 00:00:00 2001 From: Baptiste Devessier Date: Thu, 13 Mar 2025 18:18:48 +0100 Subject: [PATCH] Fix keystatic github redirect_uri by relying on x-forwarded-* headers (#10862) Fix suggested by https://github.com/Thinkmill/keystatic/issues/1022#issuecomment-2009029315. --- .../app/api/keystatic/[...params]/route.ts | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/packages/twenty-website/src/app/api/keystatic/[...params]/route.ts b/packages/twenty-website/src/app/api/keystatic/[...params]/route.ts index 837b3da79..0378fe5a8 100644 --- a/packages/twenty-website/src/app/api/keystatic/[...params]/route.ts +++ b/packages/twenty-website/src/app/api/keystatic/[...params]/route.ts @@ -1,6 +1,30 @@ import { makeRouteHandler } from '@keystatic/next/route-handler'; import config from '../../../../../keystatic.config'; -export const { POST, GET } = makeRouteHandler({ - config, -}); +const { GET: _GET, POST: _POST } = makeRouteHandler({ config }); + +function rewriteUrl(request: Request) { + const forwardedHost = request.headers.get('x-forwarded-host'); + const forwardedProto = request.headers.get('x-forwarded-proto'); + const forwardedPort = request.headers.get('x-forwarded-port'); + + if (forwardedHost && forwardedProto) { + const url = new URL(request.url); + + url.hostname = forwardedHost; + url.protocol = forwardedProto; + url.port = forwardedPort ?? ''; + + return new Request(url, request); + } + + return request; +} + +export function GET(request: Request) { + return _GET(rewriteUrl(request)); +} + +export function POST(request: Request) { + return _POST(rewriteUrl(request)); +}