diff --git a/src/app/machines/handshake/route.ts b/src/app/machines/handshake/route.ts index d0cf1dc..7b94b97 100644 --- a/src/app/machines/handshake/route.ts +++ b/src/app/machines/handshake/route.ts @@ -1,6 +1,7 @@ import { NextRequest, NextResponse } from "next/server" import { createMachineSession } from "@/server/machines-session" +import { env } from "@/lib/env" const ERROR_TEMPLATE = ` @@ -36,7 +37,11 @@ export async function GET(request: NextRequest) { } const redirectParam = request.nextUrl.searchParams.get("redirect") ?? "/" - const redirectUrl = new URL(redirectParam, request.nextUrl.origin) + const forwardedProto = request.headers.get("x-forwarded-proto") + const forwardedHost = request.headers.get("x-forwarded-host") ?? request.headers.get("host") + const forwardedOrigin = forwardedProto && forwardedHost ? `${forwardedProto}://${forwardedHost}` : null + const baseOrigin = env.NEXT_PUBLIC_APP_URL ?? forwardedOrigin ?? request.nextUrl.origin + const redirectUrl = new URL(redirectParam, baseOrigin) try { const session = await createMachineSession(token, true)