Skip to content

Commit c1bc914

Browse files
committed
Navigate to /continue route based on missing_requirements status
1 parent 446e5e0 commit c1bc914

File tree

4 files changed

+5
-31
lines changed

4 files changed

+5
-31
lines changed

.changeset/silly-zoos-decide.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@
22
'@clerk/clerk-js': patch
33
---
44

5-
Fix sign-up to render legal consent only when required and with no unverified fields
5+
Navigates to `/sign-up/continue` on sign-up with `missing_requirements` status using `ticket` as strategy
6+
7+
It fixes IdP-initiated flows with missing requirements such as accepting legal consent

packages/clerk-js/src/test/fixture-helpers.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,6 @@ const createSignUpFixtureHelpers = (baseClient: ClientJSON) => {
275275
status: 'missing_requirements',
276276
legal_accepted_at: null,
277277
missing_fields: ['legal_accepted'],
278-
unverified_fields: [],
279278
} as SignUpJSON;
280279
};
281280

packages/clerk-js/src/ui/components/SignUp/SignUpStart.tsx

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { getAlternativePhoneCodeProviderData } from '@clerk/shared/alternativePhoneCode';
22
import { useClerk } from '@clerk/shared/react';
33
import type { PhoneCodeChannel, PhoneCodeChannelData, SignUpResource } from '@clerk/shared/types';
4-
import React, { useMemo } from 'react';
4+
import React from 'react';
55

66
import { isClerkAPIResponseError } from '@/index.headless';
77
import { Card } from '@/ui/elements/Card';
@@ -130,15 +130,6 @@ function SignUpStartInternal(): JSX.Element {
130130
const isLegalConsentEnabled = userSettings.signUp.legal_consent_enabled;
131131
const oidcPrompt = ctx.oidcPrompt;
132132

133-
const onlyLegalAcceptedMissing = useMemo(
134-
() =>
135-
signUp.missingFields &&
136-
signUp.missingFields.length === 1 &&
137-
signUp.missingFields[0] === 'legal_accepted' &&
138-
signUp.unverifiedFields &&
139-
signUp.unverifiedFields.length === 0,
140-
[signUp.missingFields, signUp.unverifiedFields],
141-
);
142133
const fields = determineActiveFields({
143134
attributes,
144135
hasTicket: hasTicket || hasExistingSignUpWithTicket,
@@ -173,6 +164,7 @@ function SignUpStartInternal(): JSX.Element {
173164
redirectUrlComplete,
174165
verifyEmailPath: 'verify-email-address',
175166
verifyPhonePath: 'verify-phone-number',
167+
continuePath: 'continue',
176168
handleComplete: () => {
177169
removeClerkQueryParam('__clerk_ticket');
178170
removeClerkQueryParam('__clerk_invitation_token');
@@ -454,7 +446,6 @@ function SignUpStartInternal(): JSX.Element {
454446
formState={formState}
455447
canToggleEmailPhone={canToggleEmailPhone}
456448
handleEmailPhoneToggle={handleChangeActive}
457-
onlyLegalAcceptedMissing={onlyLegalAcceptedMissing}
458449
/>
459450
)}
460451
</SocialButtonsReversibleContainerWithDivider>

packages/clerk-js/src/ui/components/SignUp/__tests__/SignUpStart.test.tsx

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -352,24 +352,6 @@ describe('SignUpStart', () => {
352352
screen.getByText('Terms of Service');
353353
screen.getByText('Privacy Policy');
354354
});
355-
356-
it('displays legal consent only if included in missing fields without unverified fields', async () => {
357-
const { wrapper } = await createFixtures(f => {
358-
f.withEmailAddress({ required: true });
359-
f.withPassword({ required: true });
360-
f.startSignUpWithMissingLegalAccepted();
361-
f.withLegalConsent();
362-
f.withTermsPrivacyPolicyUrls({
363-
privacyPolicy: 'https://clerk.dev/privacy',
364-
termsOfService: 'https://clerk.dev/tos',
365-
});
366-
});
367-
const { getByText, queryByText } = render(<SignUpStart />, { wrapper });
368-
expect(getByText('Terms of Service')).toBeVisible();
369-
expect(getByText('Privacy Policy')).toBeVisible();
370-
expect(queryByText('Phone number')).not.toBeInTheDocument();
371-
expect(queryByText('Password')).not.toBeInTheDocument();
372-
});
373355
});
374356

375357
describe('ticket flow', () => {

0 commit comments

Comments
 (0)