diff --git a/apps/login/next-env-vars.d.ts b/apps/login/next-env-vars.d.ts index 691bfa6f56..b7a525858c 100644 --- a/apps/login/next-env-vars.d.ts +++ b/apps/login/next-env-vars.d.ts @@ -28,6 +28,6 @@ declare namespace NodeJS { * Optional: custom request headers to be added to every request * Split by comma, key value pairs separated by colon */ - CUSTOM_REQUEST_HEADERS: string; + CUSTOM_REQUEST_HEADERS?: string; } } diff --git a/apps/login/src/lib/self.ts b/apps/login/src/lib/self.ts index 7375f4f114..8d6f9aac55 100644 --- a/apps/login/src/lib/self.ts +++ b/apps/login/src/lib/self.ts @@ -1,6 +1,6 @@ "use server"; -import { createServerTransport } from "@zitadel/client/node"; +import { createServerTransport } from "./zitadel"; import { createUserServiceClient } from "@zitadel/client/v2"; import { headers } from "next/headers"; import { getSessionCookieById } from "./cookies"; diff --git a/apps/login/src/lib/server/password.ts b/apps/login/src/lib/server/password.ts index 3786145157..0ff31198fc 100644 --- a/apps/login/src/lib/server/password.ts +++ b/apps/login/src/lib/server/password.ts @@ -17,7 +17,7 @@ import { setUserPassword, } from "@/lib/zitadel"; import { ConnectError, create } from "@zitadel/client"; -import { createServerTransport } from "@zitadel/client/node"; +import { createServerTransport } from "../zitadel"; import { createUserServiceClient } from "@zitadel/client/v2"; import { Checks, diff --git a/apps/login/src/lib/service.ts b/apps/login/src/lib/service.ts index 0fbb083b05..bbf50c9fdc 100644 --- a/apps/login/src/lib/service.ts +++ b/apps/login/src/lib/service.ts @@ -1,5 +1,5 @@ import { createClientFor } from "@zitadel/client"; -import { createServerTransport } from "@zitadel/client/node"; +import { createServerTransport } from "./zitadel"; import { IdentityProviderService } from "@zitadel/proto/zitadel/idp/v2/idp_service_pb"; import { OIDCService } from "@zitadel/proto/zitadel/oidc/v2/oidc_service_pb"; import { OrganizationService } from "@zitadel/proto/zitadel/org/v2/org_service_pb"; @@ -50,7 +50,7 @@ export async function createServiceForHost( : [ (next) => { return (req) => { - process.env.CUSTOM_REQUEST_HEADERS.split(",").forEach( + process.env.CUSTOM_REQUEST_HEADERS!.split(",").forEach( (header) => { const kv = header.split(":"); req.header.set(kv[0], kv[1]); diff --git a/apps/login/src/lib/zitadel.ts b/apps/login/src/lib/zitadel.ts index 8a05701e97..5b7ff041f3 100644 --- a/apps/login/src/lib/zitadel.ts +++ b/apps/login/src/lib/zitadel.ts @@ -52,6 +52,8 @@ import { import { unstable_cacheLife as cacheLife } from "next/cache"; import { getUserAgent } from "./fingerprint"; import { createServiceForHost } from "./service"; +import { createServerTransport as libCreateServerTransport } from "@zitadel/client/node"; +import { Transport } from '@connectrpc/connect'; const useCache = process.env.DEBUG !== "true"; @@ -1497,3 +1499,24 @@ export async function listAuthenticationMethodTypes({ userId, }); } + +export function createServerTransport(token: string, baseUrl: string): Transport { + return libCreateServerTransport(token, { + baseUrl, + interceptors: !process.env.CUSTOM_REQUEST_HEADERS + ? undefined + : [ + (next) => { + return (req) => { + process.env.CUSTOM_REQUEST_HEADERS!.split(",").forEach( + (header) => { + const kv = header.split(":"); + req.header.set(kv[0], kv[1]); + }, + ); + return next(req); + }; + }, + ], + }); +}