Skip to content

Commit 0bf0bdd

Browse files
authored
feat(shared): Use both __clerk_db_jwt and __dev_browser in redirects (#2431)
1 parent 3ece3f8 commit 0bf0bdd

File tree

5 files changed

+26
-8
lines changed

5 files changed

+26
-8
lines changed

.changeset/wise-clocks-type.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@clerk/shared': minor
3+
---
4+
5+
Use both `__clerk_db_jwt` and `__dev_browser` search params to sync dev browser between application and Account Portal in development instances.
6+
This change is required to support the next major version of the ClerkJS.

packages/clerk-js/src/core/clerk.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2113,7 +2113,7 @@ describe('Clerk singleton', () => {
21132113
await sut.load();
21142114

21152115
const url = sut.buildUrlWithAuth('https://example.com/some-path', { useQueryParam: true });
2116-
expect(url).toBe('https://example.com/some-path?__dev_session=deadbeef');
2116+
expect(url).toBe('https://example.com/some-path?__dev_session=deadbeef&__clerk_db_jwt=deadbeef');
21172117
});
21182118

21192119
it('uses the query param to propagate the dev_browser JWT to Account Portal pages on dev - non-kima', async () => {
@@ -2122,7 +2122,7 @@ describe('Clerk singleton', () => {
21222122
await sut.load();
21232123

21242124
const url = sut.buildUrlWithAuth('https://accounts.abcef.12345.dev.lclclerk.com');
2125-
expect(url).toBe('https://accounts.abcef.12345.dev.lclclerk.com/?__dev_session=deadbeef');
2125+
expect(url).toBe('https://accounts.abcef.12345.dev.lclclerk.com/?__dev_session=deadbeef&__clerk_db_jwt=deadbeef');
21262126
});
21272127

21282128
it('uses the query param to propagate the dev_browser JWT to Account Portal pages on dev - kima', async () => {
@@ -2131,7 +2131,7 @@ describe('Clerk singleton', () => {
21312131
await sut.load();
21322132

21332133
const url = sut.buildUrlWithAuth('https://rested-anemone-14.accounts.dev');
2134-
expect(url).toBe('https://rested-anemone-14.accounts.dev/?__dev_session=deadbeef');
2134+
expect(url).toBe('https://rested-anemone-14.accounts.dev/?__dev_session=deadbeef&__clerk_db_jwt=deadbeef');
21352135
});
21362136
});
21372137

packages/nextjs/src/server/authMiddleware.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ describe('Dev Browser JWT when redirecting to cross origin', function () {
474474

475475
expect(resp?.status).toEqual(307);
476476
expect(resp?.headers.get('location')).toEqual(
477-
'https://accounts.included.katydid-92.lcl.dev/sign-in?redirect_url=https%3A%2F%2Fwww.clerk.com%2Fprotected&__dev_session=test_jwt',
477+
'https://accounts.included.katydid-92.lcl.dev/sign-in?redirect_url=https%3A%2F%2Fwww.clerk.com%2Fprotected&__dev_session=test_jwt&__clerk_db_jwt=test_jwt',
478478
);
479479
expect(resp?.headers.get('x-clerk-auth-reason')).toEqual('redirect');
480480
expect(authenticateRequest).toBeCalled();

packages/shared/src/__tests__/devbrowser.test.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,20 @@ describe('setDevBrowserJWTInURL(url, jwt)', () => {
1111
['/foo?bar=42#qux', 'deadbeef', false, '/foo?bar=42#qux__clerk_db_jwt[deadbeef]'],
1212
['/foo#__clerk_db_jwt[deadbeef]', 'deadbeef', false, '/foo#__clerk_db_jwt[deadbeef]'],
1313
['/foo?bar=42#qux__clerk_db_jwt[deadbeef]', 'deadbeef', false, '/foo?bar=42#qux__clerk_db_jwt[deadbeef]'],
14-
['/foo', 'deadbeef', true, '/foo?__dev_session=deadbeef'],
15-
['/foo?bar=42', 'deadbeef', true, '/foo?bar=42&__dev_session=deadbeef'],
16-
['/foo?bar=42&__clerk_db_jwt=deadbeef', 'deadbeef', true, '/foo?bar=42&__dev_session=deadbeef'],
17-
['/foo?bar=42&__dev_session=deadbeef', 'deadbeef', true, '/foo?bar=42&__dev_session=deadbeef'],
14+
['/foo', 'deadbeef', true, '/foo?__dev_session=deadbeef&__clerk_db_jwt=deadbeef'],
15+
['/foo?bar=42', 'deadbeef', true, '/foo?bar=42&__dev_session=deadbeef&__clerk_db_jwt=deadbeef'],
16+
[
17+
'/foo?bar=42&__clerk_db_jwt=deadbeef',
18+
'deadbeef',
19+
true,
20+
'/foo?bar=42&__dev_session=deadbeef&__clerk_db_jwt=deadbeef',
21+
],
22+
[
23+
'/foo?bar=42&__dev_session=deadbeef',
24+
'deadbeef',
25+
true,
26+
'/foo?bar=42&__dev_session=deadbeef&__clerk_db_jwt=deadbeef',
27+
],
1828
];
1929

2030
test.each(testCases)(

packages/shared/src/devBrowser.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ export function setDevBrowserJWTInURL(url: URL, jwt: string, asQueryParam: boole
1313

1414
if (jwtToSet) {
1515
if (asQueryParam) {
16+
// Temporarily add the dev browser jwt to both the `__clerk_db_jwt` and `__dev_session`
1617
resultURL.searchParams.append(DEV_BROWSER_SSO_JWT_PARAMETER, jwtToSet);
18+
resultURL.searchParams.append(DEV_BROWSER_JWT_MARKER, jwtToSet);
1719
} else {
1820
resultURL.hash = resultURL.hash + `${DEV_BROWSER_JWT_MARKER}[${jwtToSet}]`;
1921
}

0 commit comments

Comments
 (0)