diff --git a/.changeset/purple-peas-shave.md b/.changeset/purple-peas-shave.md new file mode 100644 index 00000000000..f8236388834 --- /dev/null +++ b/.changeset/purple-peas-shave.md @@ -0,0 +1,5 @@ +--- +"@clerk/react-router": patch +--- + +Fixed an issue where manually specified options in the middleware were not being respected. diff --git a/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts b/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts index 8be8e33c419..b69447ba3b6 100644 --- a/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts +++ b/packages/react-router/src/server/__tests__/clerkMiddleware.test.ts @@ -65,6 +65,14 @@ describe('clerkMiddleware', () => { const result = await middleware(args, mockNext); expect(mockAuthenticateRequest).toHaveBeenCalledWith(expect.any(Object), { + apiUrl: undefined, + secretKey: 'sk_test_...', + jwtKey: undefined, + proxyUrl: undefined, + isSatellite: undefined, + domain: undefined, + publishableKey: 'pk_test_...', + machineSecretKey: undefined, audience: '', authorizedParties: [], signInUrl: '', diff --git a/packages/react-router/src/server/clerkMiddleware.ts b/packages/react-router/src/server/clerkMiddleware.ts index 2e1f2d62d72..af71c526097 100644 --- a/packages/react-router/src/server/clerkMiddleware.ts +++ b/packages/react-router/src/server/clerkMiddleware.ts @@ -34,13 +34,39 @@ export const clerkMiddleware = (options?: ClerkMiddlewareOptions): MiddlewareFun return async (args, next) => { const clerkRequest = createClerkRequest(patchRequest(args.request)); const loadedOptions = loadOptions(args, options); - const { audience, authorizedParties } = loadedOptions; - const { signInUrl, signUpUrl, afterSignInUrl, afterSignUpUrl } = loadedOptions; - const { organizationSyncOptions } = loadedOptions; - const requestState = await clerkClient(args).authenticateRequest(clerkRequest, { + + // Pick only the properties needed by authenticateRequest. + // Used when manually providing options to the middleware. + const { + apiUrl, + secretKey, + jwtKey, + proxyUrl, + isSatellite, + domain, + publishableKey, + machineSecretKey, + audience, + authorizedParties, + signInUrl, + signUpUrl, + afterSignInUrl, + afterSignUpUrl, organizationSyncOptions, + } = loadedOptions; + + const requestState = await clerkClient(args).authenticateRequest(clerkRequest, { + apiUrl, + secretKey, + jwtKey, + proxyUrl, + isSatellite, + domain, + publishableKey, + machineSecretKey, audience, authorizedParties, + organizationSyncOptions, signInUrl, signUpUrl, afterSignInUrl,