diff --git a/.changeset/wise-olives-drive.md b/.changeset/wise-olives-drive.md new file mode 100644 index 00000000000..298c3b55be3 --- /dev/null +++ b/.changeset/wise-olives-drive.md @@ -0,0 +1,5 @@ +--- +'@clerk/clerk-js': patch +--- + +When password is enabled at the instance level, but not required allow users to add a password in the user profile. \ No newline at end of file diff --git a/packages/clerk-js/src/core/resources/UserSettings.ts b/packages/clerk-js/src/core/resources/UserSettings.ts index 8af85ab38c8..ed5951b7037 100644 --- a/packages/clerk-js/src/core/resources/UserSettings.ts +++ b/packages/clerk-js/src/core/resources/UserSettings.ts @@ -191,7 +191,7 @@ export class UserSettings extends BaseResource implements UserSettingsResource { } get instanceIsPasswordBased() { - return Boolean(this.attributes?.password?.enabled && this.attributes.password?.required); + return Boolean(this.attributes?.password?.enabled); } get hasValidAuthFactor() { diff --git a/packages/clerk-js/src/core/resources/__tests__/UserSettings.test.ts b/packages/clerk-js/src/core/resources/__tests__/UserSettings.test.ts index e3ec7d04cca..e87df8e5028 100644 --- a/packages/clerk-js/src/core/resources/__tests__/UserSettings.test.ts +++ b/packages/clerk-js/src/core/resources/__tests__/UserSettings.test.ts @@ -75,6 +75,17 @@ describe('UserSettings', () => { }, }, } as any as UserSettingsJSON); + expect(sut.instanceIsPasswordBased).toEqual(true); + + sut = new UserSettings({ + attributes: { + password: { + enabled: false, + required: false, + }, + }, + } as any as UserSettingsJSON); + expect(sut.instanceIsPasswordBased).toEqual(false); }); diff --git a/packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx b/packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx index 47f8004c652..d74c50398f5 100644 --- a/packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx +++ b/packages/clerk-js/src/ui/components/UserProfile/__tests__/SecurityPage.test.tsx @@ -33,9 +33,7 @@ describe('SecurityPage', () => { it('renders the Password section if instance is password based', async () => { const { wrapper, fixtures } = await createFixtures(f => { - f.withPassword({ - required: true, - }); + f.withPassword(); f.withUser({ email_addresses: ['test@clerk.com'] }); }); fixtures.clerk.user?.getSessions.mockReturnValue(Promise.resolve([]));