Drop interstitial#2304
Conversation
|
040a4f6 to
77b699c
Compare
| } as AuthenticateRequestOptions; | ||
| const requestState = await clerkClient.authenticateRequest(req, authenticateRequestOptions); | ||
|
|
||
| if (requestState.status === AuthStatus.Handshake) { |
There was a problem hiding this comment.
@nikosdouvlis it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example). I think we need to keep the check to only consider the presence of a Location header.
There was a problem hiding this comment.
Got it, makes sense.
I think we might want to introduce a new status for it or at least think of a different way to transfer this knowledge into the code as it's hard to follow the logic here otherwise
fc043fa to
dcf531b
Compare
| // TODO @nikos | ||
| // if (!this.#options.isInterstitial) { | ||
| // this.#clearJustSynced(); | ||
| // } |
There was a problem hiding this comment.
I think we can do this:
| // TODO @nikos | |
| // if (!this.#options.isInterstitial) { | |
| // this.#clearJustSynced(); | |
| // } | |
| this.#clearJustSynced(); |
| // triggering a handshake redirect | ||
| if (locationHeader) { | ||
| return new Response(null, { status: 307, headers: requestStateHeaders }); | ||
| // triggering a handshake redirect |
There was a problem hiding this comment.
Okay so I realize that I misspoke earlier...after looking at the logic, we only redirect when the status is handshake, so the check you had initially added is the right approach 👍
As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example)
b321473 to
7c8906c
Compare
1dadc54 to
b1f0cb8
Compare
* feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check
* feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check
* feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check
* feat(backend): Try the new Client Handshake mechanism * feat(backend): Update authenticateRequest handler to support multi-domain handshake * feat(repo): Introduce tests for client handshake (#2265) * Test suite start * feat(backend,nextjs,utils): Fix jest * first test * Fix bug in jwks cache for multiple runtime keys * Add all the tests, including many failing * Add all the tests, including many failing * fix(shared): Correctly construct proxy URL --------- Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Bryce Kalow <bryce@clerk.dev> * chore(backend): Refactor authenticateRequest to clarify logic * fix(backend): Fix options passing to authenticateRequest * feat(backend): Add sec-fetch-dest check for satellite sync, adjust tests to support additional URLs * feat(backend): Account for clock skew in dev, but still log error * feat(backend): Refactor backend tests to account for recent refactoring to authenticateRequest * feat(backend): Treat handshake payload as a signed jwt * fix(backend): Add tests and adjust logic to ensure existing tests pass * chore(backend): Refactor tests to conform to new method signature * chore(repo): Add changeset * feat(*): Drop interstitial (#2304) * feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check * chore(*): Fix linter * chore(backend): Remove unused AuthErrorReason properties, destructure from authenticateContext * chore(clerk-js): Remove unused @ts-expect-error directive * fix: Address build issues in sdk-node * fix(remix): Correct Remix build issues * chore(repo): Apply linting fixes --------- Co-authored-by: Sokratis Vidros <sokratis.vidros@gmail.com> Co-authored-by: Colin Sidoti <51144033+colinclerk@users.noreply.github.com> Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Colin Sidoti <colin@clerk.dev>
…#2331) * feat(backend): Try the new Client Handshake mechanism * feat(backend): Update authenticateRequest handler to support multi-domain handshake * feat(repo): Introduce tests for client handshake (#2265) * Test suite start * feat(backend,nextjs,utils): Fix jest * first test * Fix bug in jwks cache for multiple runtime keys * Add all the tests, including many failing * Add all the tests, including many failing * fix(shared): Correctly construct proxy URL --------- Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Bryce Kalow <bryce@clerk.dev> * chore(backend): Refactor authenticateRequest to clarify logic * fix(backend): Fix options passing to authenticateRequest * feat(backend): Add sec-fetch-dest check for satellite sync, adjust tests to support additional URLs * feat(backend): Account for clock skew in dev, but still log error * feat(backend): Refactor backend tests to account for recent refactoring to authenticateRequest * feat(backend): Treat handshake payload as a signed jwt * fix(backend): Add tests and adjust logic to ensure existing tests pass * chore(backend): Refactor tests to conform to new method signature * chore(repo): Add changeset * feat(*): Drop interstitial (#2304) * feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check * chore(*): Fix linter * chore(backend): Remove unused AuthErrorReason properties, destructure from authenticateContext * chore(clerk-js): Remove unused @ts-expect-error directive * feat(repo): Migrate handshake tests to e2e test suite * fix(nextjs): Ensure we respect location header from authenticateRequest() regardless of auth status * Create bright-ways-provide.md * chore(clerk-sdk-node): Properly export createClerkClient * chore(clerk-sdk-node): Properly export createClerkClient * fix(nextjs): Fix undefined headers in tests --------- Co-authored-by: Sokratis Vidros <sokratis.vidros@gmail.com> Co-authored-by: Colin Sidoti <51144033+colinclerk@users.noreply.github.com> Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Colin Sidoti <colin@clerk.dev>
* feat(backend): Try the new Client Handshake mechanism * feat(backend): Update authenticateRequest handler to support multi-domain handshake * feat(repo): Introduce tests for client handshake (#2265) * Test suite start * feat(backend,nextjs,utils): Fix jest * first test * Fix bug in jwks cache for multiple runtime keys * Add all the tests, including many failing * Add all the tests, including many failing * fix(shared): Correctly construct proxy URL --------- Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Bryce Kalow <bryce@clerk.dev> * chore(backend): Refactor authenticateRequest to clarify logic * fix(backend): Fix options passing to authenticateRequest * feat(backend): Add sec-fetch-dest check for satellite sync, adjust tests to support additional URLs * feat(backend): Account for clock skew in dev, but still log error * feat(backend): Refactor backend tests to account for recent refactoring to authenticateRequest * feat(backend): Treat handshake payload as a signed jwt * fix(backend): Add tests and adjust logic to ensure existing tests pass * chore(backend): Refactor tests to conform to new method signature * chore(repo): Add changeset * feat(*): Drop interstitial (#2304) * feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check * chore(*): Fix linter * chore(backend): Remove unused AuthErrorReason properties, destructure from authenticateContext * chore(clerk-js): Remove unused @ts-expect-error directive * fix: Address build issues in sdk-node * fix(remix): Correct Remix build issues * chore(repo): Apply linting fixes --------- Co-authored-by: Sokratis Vidros <sokratis.vidros@gmail.com> Co-authored-by: Colin Sidoti <51144033+colinclerk@users.noreply.github.com> Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Colin Sidoti <colin@clerk.dev>
…#2331) * feat(backend): Try the new Client Handshake mechanism * feat(backend): Update authenticateRequest handler to support multi-domain handshake * feat(repo): Introduce tests for client handshake (#2265) * Test suite start * feat(backend,nextjs,utils): Fix jest * first test * Fix bug in jwks cache for multiple runtime keys * Add all the tests, including many failing * Add all the tests, including many failing * fix(shared): Correctly construct proxy URL --------- Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Bryce Kalow <bryce@clerk.dev> * chore(backend): Refactor authenticateRequest to clarify logic * fix(backend): Fix options passing to authenticateRequest * feat(backend): Add sec-fetch-dest check for satellite sync, adjust tests to support additional URLs * feat(backend): Account for clock skew in dev, but still log error * feat(backend): Refactor backend tests to account for recent refactoring to authenticateRequest * feat(backend): Treat handshake payload as a signed jwt * fix(backend): Add tests and adjust logic to ensure existing tests pass * chore(backend): Refactor tests to conform to new method signature * chore(repo): Add changeset * feat(*): Drop interstitial (#2304) * feat(backend): Remove interstitial endpoints * feat(backend,types): Remove local interstitial script * feat(types): Clean retheme types * feat(backend): Remove interstitial and interstitial rules * feat(clerk-js): Remove interstitial from clerk-js * feat(nextjs): Remove interstitial from authMiddleware * feat(fastify): Remove interstitial * feat(gatsby-plugin-clerk): Remove interstitial * feat(remix): Remove interstitial * feat(clerk-sdk-node): Remove interstitial * fix(nextjs): Always respect redirect header if found As it's possible that we trigger a redirect from authenticateRequest that isn't a handshake status (dev multi-domain sync, for example) * chore(repo): Fix sdk tests * fix(clerk-js): Fix tests related to db-jwt * fix(clerk-js): Keep hasJustSynced check * chore(*): Fix linter * chore(backend): Remove unused AuthErrorReason properties, destructure from authenticateContext * chore(clerk-js): Remove unused @ts-expect-error directive * feat(repo): Migrate handshake tests to e2e test suite * fix(nextjs): Ensure we respect location header from authenticateRequest() regardless of auth status * Create bright-ways-provide.md * chore(clerk-sdk-node): Properly export createClerkClient * chore(clerk-sdk-node): Properly export createClerkClient * fix(nextjs): Fix undefined headers in tests --------- Co-authored-by: Sokratis Vidros <sokratis.vidros@gmail.com> Co-authored-by: Colin Sidoti <51144033+colinclerk@users.noreply.github.com> Co-authored-by: Nikos Douvlis <nikosdouvlis@gmail.com> Co-authored-by: Colin Sidoti <colin@clerk.dev>
Description
❗ This needs to be merged into #2300 or after #2300 is merged
Checklist
npm testruns as expected.npm run buildruns as expected.Type of change
Packages affected
@clerk/backend@clerk/chrome-extension@clerk/clerk-js@clerk/clerk-expo@clerk/fastifygatsby-plugin-clerk@clerk/localizations@clerk/nextjs@clerk/clerk-react@clerk/remix@clerk/clerk-sdk-node@clerk/shared@clerk/themes@clerk/typesbuild/tooling/chore