diff --git a/.changeset/clean-grapes-allow.md b/.changeset/clean-grapes-allow.md new file mode 100644 index 00000000000..83c6e434cbd --- /dev/null +++ b/.changeset/clean-grapes-allow.md @@ -0,0 +1,7 @@ +--- +'@clerk/clerk-js': patch +'@clerk/clerk-react': patch +'@clerk/types': patch +--- + +Introduce `__internal_hasAfterAuthFlows` flag diff --git a/packages/clerk-js/src/core/clerk.ts b/packages/clerk-js/src/core/clerk.ts index 8d1f5450c43..4735c7f7759 100644 --- a/packages/clerk-js/src/core/clerk.ts +++ b/packages/clerk-js/src/core/clerk.ts @@ -2524,6 +2524,10 @@ export class Clerk implements ClerkInterface { this.#emit(); }; + get __internal_hasAfterAuthFlows() { + return !!this.environment?.organizationSettings?.forceOrganizationSelection; + } + #defaultSession = (client: ClientResource): SignedInSessionResource | null => { if (client.lastActiveSessionId) { const currentSession = client.signedInSessions.find(s => s.id === client.lastActiveSessionId); diff --git a/packages/clerk-js/src/core/resources/SignIn.ts b/packages/clerk-js/src/core/resources/SignIn.ts index 3feeea5ddf7..fe4cb5c045c 100644 --- a/packages/clerk-js/src/core/resources/SignIn.ts +++ b/packages/clerk-js/src/core/resources/SignIn.ts @@ -235,11 +235,10 @@ export class SignIn extends BaseResource implements SignInResource { const redirectUrlWithAuthToken = SignIn.clerk.buildUrlWithAuth(redirectUrl); - // When force organization selection is enabled, redirect to SSO callback route. + // When after-auth is enabled, redirect to SSO callback route. // This ensures organization selection tasks are displayed after sign-in, // rather than redirecting to potentially unprotected pages while the session is pending. - const actionCompleteRedirectUrl = SignIn.clerk.__unstable__environment?.organizationSettings - .forceOrganizationSelection + const actionCompleteRedirectUrl = SignIn.clerk.__internal_hasAfterAuthFlows ? redirectUrlWithAuthToken : redirectUrlComplete; diff --git a/packages/clerk-js/src/core/resources/SignUp.ts b/packages/clerk-js/src/core/resources/SignUp.ts index 1023cd8a47d..ed16d882875 100644 --- a/packages/clerk-js/src/core/resources/SignUp.ts +++ b/packages/clerk-js/src/core/resources/SignUp.ts @@ -290,11 +290,10 @@ export class SignUp extends BaseResource implements SignUpResource { const redirectUrlWithAuthToken = SignUp.clerk.buildUrlWithAuth(redirectUrl); - // When force organization selection is enabled, redirect to SSO callback route. + // When force after-auth is enabled, redirect to SSO callback route. // This ensures organization selection tasks are displayed after sign-up, // rather than redirecting to potentially unprotected pages while the session is pending. - const actionCompleteRedirectUrl = SignUp.clerk.__unstable__environment?.organizationSettings - .forceOrganizationSelection + const actionCompleteRedirectUrl = SignUp.clerk.__internal_hasAfterAuthFlows ? redirectUrlWithAuthToken : redirectUrlComplete; diff --git a/packages/react/src/isomorphicClerk.ts b/packages/react/src/isomorphicClerk.ts index 3d8c3e7f0db..1250c68c739 100644 --- a/packages/react/src/isomorphicClerk.ts +++ b/packages/react/src/isomorphicClerk.ts @@ -105,6 +105,7 @@ type IsomorphicLoadedClerk = Without< | 'apiKeys' | '__internal_setComponentNavigationContext' | '__internal_setActiveInProgress' + | '__internal_hasAfterAuthFlows' > & { client: ClientResource | undefined; billing: CommerceBillingNamespace | undefined; diff --git a/packages/types/src/clerk.ts b/packages/types/src/clerk.ts index 7cf33f0342f..543f45d40a0 100644 --- a/packages/types/src/clerk.ts +++ b/packages/types/src/clerk.ts @@ -841,6 +841,12 @@ export interface Clerk { */ __internal_setActiveInProgress: boolean; + /** + * Internal flag indicating whether after-auth flows are enabled based on instance settings. + * @internal + */ + __internal_hasAfterAuthFlows: boolean; + /** * API Keys Object * @experimental