From 8f8590cdd488feaf51eefca914c0ac2ece701289 Mon Sep 17 00:00:00 2001 From: Zai Shi Date: Tue, 20 May 2025 10:07:46 -0700 Subject: [PATCH] fix --- .../integrations/neon/oauth/idp/[[...route]]/route.tsx | 1 + .../api/latest/integrations/oauth/idp/[[...route]]/idp.ts | 6 +++--- .../latest/integrations/oauth/idp/[[...route]]/route.tsx | 1 + .../app/api/latest/integrations/projects/transfer/route.tsx | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/backend/src/app/api/latest/integrations/neon/oauth/idp/[[...route]]/route.tsx b/apps/backend/src/app/api/latest/integrations/neon/oauth/idp/[[...route]]/route.tsx index a8ee17c34..adfba7aa9 100644 --- a/apps/backend/src/app/api/latest/integrations/neon/oauth/idp/[[...route]]/route.tsx +++ b/apps/backend/src/app/api/latest/integrations/neon/oauth/idp/[[...route]]/route.tsx @@ -19,6 +19,7 @@ function getOidcCallbackPromise() { const oidc = await createOidcProvider({ id: "stack-preconfigured-idp:integrations/neon", baseUrl: idpBaseUrl.toString(), + clientInteractionUrl: new URL(`/integrations/neon/confirm`, getEnvVariable("NEXT_PUBLIC_STACK_DASHBOARD_URL")).toString(), }); return oidc.callback(); })(); diff --git a/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/idp.ts b/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/idp.ts index e80b23ccb..b14c78b6b 100644 --- a/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/idp.ts +++ b/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/idp.ts @@ -162,7 +162,7 @@ function createPrismaAdapter(idpId: string) { }); } -export async function createOidcProvider(options: { id: string, baseUrl: string }) { +export async function createOidcProvider(options: { id: string, baseUrl: string, clientInteractionUrl: string }) { const privateJwk = await getPrivateJwk(getPerAudienceSecret({ audience: `https://idp-jwk-audience.stack-auth.com/${encodeURIComponent(options.id)}`, secret: getEnvVariable("STACK_SERVER_SECRET"), @@ -300,7 +300,7 @@ export async function createOidcProvider(options: { id: string, baseUrl: string const authorizationCode = `${ctx.request.query.code}`; const authorizationCodeObj = await prismaClient.projectWrapperCodes.findUnique({ where: { - idpId: "stack-preconfigured-idp:integrations/neon", + idpId: options.id, authorizationCode, }, }); @@ -383,7 +383,7 @@ export async function createOidcProvider(options: { id: string, baseUrl: string } const uid = ctx.path.split('/')[2]; - const interactionUrl = new URL(`/integrations/neon/confirm`, getEnvVariable("NEXT_PUBLIC_STACK_DASHBOARD_URL")); + const interactionUrl = new URL(options.clientInteractionUrl); interactionUrl.searchParams.set("interaction_uid", uid); if (neonProjectName) { interactionUrl.searchParams.set("neon_project_name", neonProjectName); diff --git a/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/route.tsx b/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/route.tsx index baa104ff9..7988267e5 100644 --- a/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/route.tsx +++ b/apps/backend/src/app/api/latest/integrations/oauth/idp/[[...route]]/route.tsx @@ -19,6 +19,7 @@ function getOidcCallbackPromise() { const oidc = await createOidcProvider({ id: "stack-preconfigured-idp:integrations", baseUrl: idpBaseUrl.toString(), + clientInteractionUrl: new URL(`/integrations/confirm`, getEnvVariable("NEXT_PUBLIC_STACK_DASHBOARD_URL")).toString(), }); return oidc.callback(); })(); diff --git a/apps/backend/src/app/api/latest/integrations/projects/transfer/route.tsx b/apps/backend/src/app/api/latest/integrations/projects/transfer/route.tsx index ffe8c3aed..340a6b143 100644 --- a/apps/backend/src/app/api/latest/integrations/projects/transfer/route.tsx +++ b/apps/backend/src/app/api/latest/integrations/projects/transfer/route.tsx @@ -91,7 +91,7 @@ export const POST = createSmartRouteHandler({ project_id: neonProvisionedProject.projectId, neon_client_id: neonProvisionedProject.neonClientId, }, - callbackUrl: new URL("/integrations/neon/projects/transfer/confirm", getEnvVariable("NEXT_PUBLIC_STACK_DASHBOARD_URL")), + callbackUrl: new URL("/integrations/projects/transfer/confirm", getEnvVariable("NEXT_PUBLIC_STACK_DASHBOARD_URL")), expiresInMs: 1000 * 60 * 60, });