Skip to content

Commit 7d680bc

Browse files
dios-davidLekoArts
andauthored
fix(tanstack-react-start): Apply response headers (#6057)
Co-authored-by: Lennart <lekoarts@gmail.com>
1 parent 795d09a commit 7d680bc

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

.changeset/puny-brooms-grab.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@clerk/tanstack-react-start': patch
3+
---
4+
5+
Apply Clerk response headers

integration/tests/tanstack-start/basic.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,15 @@ testAgainstRunningApps({ withEnv: [appConfigs.envs.withEmailCodes] })(
7171

7272
expect(clerkInitialState !== undefined).toBeTruthy();
7373
});
74+
75+
test('clerk handler sets headers', async ({ page, context }) => {
76+
const u = createTestUtils({ app, page, context });
77+
const r = await u.po.signIn.goTo();
78+
79+
expect(r.headers()).toContain({
80+
'x-clerk-auth-reason': 'session-token-and-uat-missing',
81+
'x-clerk-auth-status': 'signed-out',
82+
});
83+
});
7484
},
7585
);

packages/tanstack-react-start/src/server/middlewareHandler.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,16 @@ export function createClerkHandler<TRouter extends AnyRouter>(
2424

2525
const requestState = await authenticateRequest(request, loadedOptions);
2626

27-
const clerkInitialState = getResponseClerkState(requestState, loadedOptions);
27+
const { clerkInitialState, headers } = getResponseClerkState(requestState, loadedOptions);
2828

2929
// Merging the TanStack router context with the Clerk context and loading the router
3030
router.update({
31-
context: { ...router.options.context, ...clerkInitialState },
31+
context: { ...router.options.context, clerkInitialState },
32+
});
33+
34+
// Adding the Clerk response headers to the response
35+
headers.forEach((value, key) => {
36+
responseHeaders.set(key, value);
3237
});
3338

3439
await router.load();

0 commit comments

Comments
 (0)