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:
commit
fe39e42271
53 changed files with 205 additions and 185 deletions
|
@ -8,6 +8,7 @@
|
|||
bottom: 1px;
|
||||
|
||||
.button {
|
||||
user-select: none;
|
||||
width: 32px;
|
||||
height: 16px;
|
||||
margin: 0;
|
||||
|
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -37,12 +37,6 @@ const content = {
|
|||
default_language_deletion_description:
|
||||
'{{language}} is set as your default language and can’t 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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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([
|
||||
|
|
Loading…
Add table
Reference in a new issue