0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-03-31 22:51:25 -05:00

Merge pull request #4475 from logto-io/gao-password-policy-bug-bash

refactor: refine password policy details
This commit is contained in:
Gao Sun 2023-09-12 15:29:55 +08:00 committed by GitHub
commit fe39e42271
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 205 additions and 185 deletions

View file

@ -8,6 +8,7 @@
bottom: 1px;
.button {
user-select: none;
width: 32px;
height: 16px;
margin: 0;

View file

@ -3,7 +3,6 @@ import TabWrapper from '@/ds-components/TabWrapper';
import * as styles from '../index.module.scss';
import AuthenticationForm from './AuthenticationForm';
import LanguagesForm from './LanguagesForm';
import TermsForm from './TermsForm';
@ -17,7 +16,6 @@ function Content({ isActive }: Props) {
{isActive && <PageMeta titleKey={['sign_in_exp.tabs.content', 'sign_in_exp.page_title']} />}
<TermsForm />
<LanguagesForm isManageLanguageVisible />
<AuthenticationForm />
</TabWrapper>
);
}

View file

@ -10,6 +10,11 @@
gap: _.unit(6);
}
.textarea {
margin-left: _.unit(7);
margin-top: _.unit(2);
}
.passwordOption {
// Every password option should be put in a `<FormField>` component, a margin
// is added to the component to separate it from the previous one or the title.
@ -31,9 +36,5 @@
color: var(--color-text-secondary);
margin-top: _.unit(0.5);
}
.textarea {
margin-top: _.unit(1);
}
}
}

View file

@ -79,10 +79,16 @@ function PasswordPolicy({ isActive }: Props) {
<div className={commonStyles.formFieldDescription}>
<Trans
components={{
a: <TextLink href="https://pages.nist.gov/800-63-3/sp800-63b.html#sec5" />,
a: (
<TextLink
href="https://pages.nist.gov/800-63-3/sp800-63b.html#sec5"
target="_blank"
rel="noopener"
/>
),
}}
>
{t('minimum_length_description', { max })}
{t('minimum_length_description')}
</Trans>
</div>
<Controller
@ -102,8 +108,8 @@ function PasswordPolicy({ isActive }: Props) {
error={
errors.passwordPolicy?.length?.min && t('minimum_length_error', { min: 1, max })
}
onChange={(event: ChangeEvent<HTMLInputElement>) => {
onChange(Number(event.target.value));
onChange={({ target: { value } }: ChangeEvent<HTMLInputElement>) => {
onChange(value && Number(value));
}}
onValueUp={() => {
onChange(value + 1);
@ -175,22 +181,15 @@ function PasswordPolicy({ isActive }: Props) {
name="passwordPolicy.isCustomWordsEnabled"
title={t('custom_words')}
description={t('custom_words_description')}
>
{getValues('passwordPolicy.isCustomWordsEnabled') && (
<Textarea
className={styles.textarea}
rows={5}
placeholder={t('custom_words_placeholder')}
onClick={(event) => {
event.stopPropagation();
}}
onKeyDown={(event) => {
event.stopPropagation();
}}
{...register('passwordPolicy.customWords')}
/>
)}
</PasswordOption>
/>
{getValues('passwordPolicy.isCustomWordsEnabled') && (
<Textarea
className={styles.textarea}
rows={5}
placeholder={t('custom_words_placeholder')}
{...register('passwordPolicy.customWords')}
/>
)}
</FormField>
</Card>
</TabWrapper>

View file

@ -8,21 +8,23 @@ import Switch from '@/ds-components/Switch';
import type { SignInExperienceForm } from '../../types';
import * as styles from '../index.module.scss';
function AuthenticationForm() {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
function AdvancedOptions() {
const { t } = useTranslation(undefined, {
keyPrefix: 'admin_console.sign_in_exp.sign_up_and_sign_in.advanced_options',
});
const { register } = useFormContext<SignInExperienceForm>();
return (
<Card>
<div className={styles.title}>{t('sign_in_exp.content.advanced_options.title')}</div>
<FormField title="sign_in_exp.content.advanced_options.enable_user_registration">
<div className={styles.title}>{t('title')}</div>
<FormField title="sign_in_exp.sign_up_and_sign_in.advanced_options.enable_user_registration">
<Switch
{...register('createAccountEnabled')}
label={t('sign_in_exp.content.advanced_options.enable_user_registration_description')}
label={t('enable_user_registration_description')}
/>
</FormField>
</Card>
);
}
export default AuthenticationForm;
export default AdvancedOptions;

View file

@ -3,6 +3,7 @@ import TabWrapper from '@/ds-components/TabWrapper';
import * as styles from '../index.module.scss';
import AdvancedOptions from './AdvancedOptions';
import SignInForm from './SignInForm';
import SignUpForm from './SignUpForm';
import SocialSignInForm from './SocialSignInForm';
@ -20,6 +21,7 @@ function SignUpAndSignIn({ isActive }: Props) {
<SignUpForm />
<SignInForm />
<SocialSignInForm />
<AdvancedOptions />
</TabWrapper>
);
}

View file

@ -586,23 +586,13 @@ describe('sign-in experience(happy path): sign-up and sign-in', () => {
});
});
describe('disable user registration', () => {
it('navigate to content tab', async () => {
await expectToClickNavTab(page, 'Content');
it('can disable user registration', async () => {
const switchSelector = 'label[class$=switch]:has(input[name=createAccountEnabled])';
await expect(page).toClick(switchSelector);
await expectToSaveSignInExperience(page);
await waitForFormCard(page, 'TERMS');
await waitForFormCard(page, 'LANGUAGES');
await waitForFormCard(page, 'ADVANCED OPTIONS');
});
it('disable user registration', async () => {
const switchSelector = 'label[class$=switch]:has(input[name=createAccountEnabled])';
await expect(page).toClick(switchSelector);
await expectToSaveSignInExperience(page);
// Reset
await expect(page).toClick(switchSelector);
await expectToSaveSignInExperience(page);
});
// Reset
await expect(page).toClick(switchSelector);
await expectToSaveSignInExperience(page);
});
});

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -53,6 +53,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Dies ist unerlässlich, da Sie {{identifier}} als obligatorischen Identifier ausgewählt haben.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -1,12 +1,11 @@
const password_policy = {
password_requirements: 'Password requirements',
minimum_length: 'Minimum length',
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
minimum_required_char_types: 'Minimum required character types',
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
password_rejection: 'Password rejection',
compromised_passwords: 'Reject compromised password',
breached_passwords: 'Breached passwords',

View file

@ -52,6 +52,12 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'This is essential as you have selected {{identifier}} as a required identifier.',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -56,6 +56,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Es esencial ya que has seleccionado {{identifier}} como identificador obligatorio.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -56,6 +56,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Ceci est essentiel car vous avez sélectionné {{identifier}} comme identificateur requis.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -53,6 +53,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Questo è essenziale in quanto hai selezionato {{identifier}} come identificatore obbligatorio.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -51,6 +51,15 @@ const sign_up_and_sign_in = {
'これは、サインアップ時に確認コードの提供オプションのみを有効にした場合に必要です。サインアッププロセスでパスワード設定を許可する場合は、ボックスのチェックを外してもかまいません。',
delete_sign_in_method: 'これは{{identifier}}を必須の識別子として選択した場合に必要です。',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -50,6 +50,15 @@ const sign_up_and_sign_in = {
'가입 시 인증 코드를 제공하는 옵션만 활성화했기 때문에 이것은 필수예요. 회원가입에서 비밀번호 설정이 허용되면 이 옵션을 취소할 수 있어요.',
delete_sign_in_method: '{{identifier}}를 필수 ID로 설정했기 때문에 이 옵션은 필수예요.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -53,6 +53,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Jest to istotne, ponieważ wybrałeś {{identifier}} jako wymagany identyfikator.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -52,6 +52,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Isso é essencial, pois você selecionou {{identifier}} como um identificador obrigatório.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -52,6 +52,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Isto é essencial uma vez que selecionou {{identifier}} como um identificador obrigatório.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -53,6 +53,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'Это необходимо, так как вы выбрали {{identifier}} в качестве обязательного идентификатора.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -52,6 +52,15 @@ const sign_up_and_sign_in = {
'Bu, yalnızca doğrulama kodu sağlama seçeneğini etkinleştirdiğiniz için önemlidir. Kayıt işlemi sırasında şifre oluşturma izni verildiğinde kutuyu kaldırabilirsiniz.',
delete_sign_in_method: 'Bu, {{identifier}} gerekliliğini belirlediğiniz için önemlidir.',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -47,6 +47,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'因注册设置里你启用了{{identifier}}标识。这些信息在用户登录时,属于必选项。',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -47,6 +47,15 @@ const sign_up_and_sign_in = {
delete_sign_in_method:
'因註冊設置裏你啟用了{{identifier}}標識。這些信息在用戶登錄時,屬於必選項。',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -37,12 +37,6 @@ const content = {
default_language_deletion_description:
'{{language}} is set as your default language and cant be deleted. ',
},
advanced_options: {
title: 'ADVANCED OPTIONS',
enable_user_registration: 'Enable user registration',
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(content);

View file

@ -4,15 +4,14 @@ const password_policy = {
/** UNTRANSLATED */
minimum_length: 'Minimum length',
/** UNTRANSLATED */
minimum_length_description:
'NIST suggests using <a>at least 8 characters</a> for web products. The maximum length is {{max}}.',
minimum_length_description: 'NIST suggests using <a>at least 8 characters</a> for web products.',
/** UNTRANSLATED */
minimum_length_error: 'Minimum length must be between {{min}} and {{max}} (inclusive).',
/** UNTRANSLATED */
minimum_required_char_types: 'Minimum required character types',
/** UNTRANSLATED */
minimum_required_char_types_description:
'Lowercase letters (A-Z), uppercase letters (a-z), numbers (0-9), and special characters ({{symbols}}) are all.',
'Character types: uppercase (A-Z), lowercase (a-z), numbers (0-9), and special symbols ({{symbols}}).',
/** UNTRANSLATED */
password_rejection: 'Password rejection',
/** UNTRANSLATED */

View file

@ -46,6 +46,15 @@ const sign_up_and_sign_in = {
'因註冊設置啟用了驗證碼標誌,驗證碼屬於使用者必選項,啟用密碼註冊後,你可以選擇關閉驗證碼登入。',
delete_sign_in_method: '因註冊設置啟用了{{identifier}}標誌。在使用者登入時,這些資訊是必填的。',
},
advanced_options: {
/** UNTRANSLATED */
title: 'ADVANCED OPTIONS',
/** UNTRANSLATED */
enable_user_registration: 'Enable user registration',
/** UNTRANSLATED */
enable_user_registration_description:
'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
},
};
export default Object.freeze(sign_up_and_sign_in);

View file

@ -109,7 +109,7 @@ export type UserInfo = Partial<{
* ```
*/
export class PasswordPolicyChecker {
static symbols = Object.freeze('!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' as const);
static symbols = Object.freeze('!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ ' as const);
/** A set of characters that are considered as sequential. */
static sequence = Object.freeze([