mirror of
https://github.com/logto-io/logto.git
synced 2025-03-31 22:51:25 -05:00
chore(console): update mfa phrases (#4669)
This commit is contained in:
parent
1439f76a7a
commit
7d7f435bc1
21 changed files with 49 additions and 194 deletions
|
@ -1,12 +0,0 @@
|
|||
@use '@/scss/underscore' as _;
|
||||
|
||||
.policyLabel {
|
||||
font: var(--font-body-2);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: _.unit(1);
|
||||
}
|
||||
|
||||
.description {
|
||||
color: var(--color-text-secondary);
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
import { type AdminConsoleKey } from '@logto/phrases';
|
||||
|
||||
import DynamicT from '@/ds-components/DynamicT';
|
||||
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
export type Props = {
|
||||
title: AdminConsoleKey;
|
||||
description: AdminConsoleKey;
|
||||
};
|
||||
|
||||
function PolicyOptionTitle({ title, description }: Props) {
|
||||
return (
|
||||
<div className={styles.policyLabel}>
|
||||
<div>
|
||||
<DynamicT forKey={title} />
|
||||
</div>
|
||||
<div className={styles.description}>
|
||||
<DynamicT forKey={description} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PolicyOptionTitle;
|
|
@ -1,14 +1,7 @@
|
|||
import { type AdminConsoleKey } from '@logto/phrases';
|
||||
import { MfaPolicy } from '@logto/schemas';
|
||||
|
||||
import { type Props as PolicyOptionTitleProps } from './PolicyOptionTitle';
|
||||
|
||||
export const policyOptionTitlePropsMap: Record<MfaPolicy, PolicyOptionTitleProps> = {
|
||||
[MfaPolicy.UserControlled]: {
|
||||
title: 'mfa.user_controlled',
|
||||
description: 'mfa.user_controlled_description',
|
||||
},
|
||||
[MfaPolicy.Mandatory]: {
|
||||
title: 'mfa.mandatory',
|
||||
description: 'mfa.mandatory_description',
|
||||
},
|
||||
export const policyOptionTitleMap: Record<MfaPolicy, AdminConsoleKey> = {
|
||||
[MfaPolicy.UserControlled]: 'mfa.user_controlled',
|
||||
[MfaPolicy.Mandatory]: 'mfa.mandatory',
|
||||
};
|
||||
|
|
|
@ -3,33 +3,21 @@
|
|||
.factorField {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: _.unit(4);
|
||||
}
|
||||
|
||||
.fieldDescription {
|
||||
font: var(--font-body-2);
|
||||
color: var(--color-text-secondary);
|
||||
margin-bottom: _.unit(2);
|
||||
gap: _.unit(2);
|
||||
}
|
||||
|
||||
.backupCodeField {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: _.unit(2);
|
||||
padding-top: _.unit(2);
|
||||
|
||||
.backupCodeDescription {
|
||||
margin-bottom: unset;
|
||||
font: var(--font-body-2);
|
||||
color: var(--color-text-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
.unlockMfaNotice {
|
||||
margin-top: _.unit(4);
|
||||
}
|
||||
|
||||
.policyRadio {
|
||||
> div[class$='content'] {
|
||||
> div[class$='indicator'] {
|
||||
align-self: flex-start;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { MfaFactor, MfaPolicy, type SignInExperience } from '@logto/schemas';
|
||||
import classNames from 'classnames';
|
||||
import { useContext, useMemo } from 'react';
|
||||
import { Controller, useForm } from 'react-hook-form';
|
||||
import { toast } from 'react-hot-toast';
|
||||
|
@ -24,8 +23,7 @@ import { trySubmitSafe } from '@/utils/form';
|
|||
import { type MfaConfigForm, type MfaConfig } from '../types';
|
||||
|
||||
import FactorLabel from './FactorLabel';
|
||||
import PolicyOptionTitle from './PolicyOptionTitle';
|
||||
import { policyOptionTitlePropsMap } from './constants';
|
||||
import { policyOptionTitleMap } from './constants';
|
||||
import * as styles from './index.module.scss';
|
||||
import { convertMfaFormToConfig, convertMfaConfigToForm, validateBackupCodeFactor } from './utils';
|
||||
|
||||
|
@ -84,11 +82,8 @@ function MfaForm({ data, onMfaUpdated }: Props) {
|
|||
onSubmit={onSubmit}
|
||||
onDiscard={reset}
|
||||
>
|
||||
<FormCard title="mfa.factors">
|
||||
<FormField title="mfa.multi_factors">
|
||||
<div className={styles.fieldDescription}>
|
||||
<DynamicT forKey="mfa.multi_factors_description" />
|
||||
</div>
|
||||
<FormCard title="mfa.factors" description="mfa.multi_factors_description">
|
||||
<FormField title="mfa.multi_factors" headlineSpacing="large">
|
||||
<div className={styles.factorField}>
|
||||
<Switch
|
||||
disabled={isMfaDisabled}
|
||||
|
@ -101,7 +96,7 @@ function MfaForm({ data, onMfaUpdated }: Props) {
|
|||
{...register('webAuthnEnabled')}
|
||||
/>
|
||||
<div className={styles.backupCodeField}>
|
||||
<div className={classNames(styles.fieldDescription, styles.backupCodeDescription)}>
|
||||
<div className={styles.backupCodeDescription}>
|
||||
<DynamicT forKey="mfa.backup_code_setup_hint" />
|
||||
</div>
|
||||
<Switch
|
||||
|
@ -137,25 +132,16 @@ function MfaForm({ data, onMfaUpdated }: Props) {
|
|||
)}
|
||||
</FormCard>
|
||||
<FormCard title="mfa.policy">
|
||||
<FormField title="mfa.two_step_sign_in_policy">
|
||||
<div className={styles.fieldDescription}>
|
||||
<DynamicT forKey="mfa.two_step_sign_in_policy_description" />
|
||||
</div>
|
||||
<FormField title="mfa.two_step_sign_in_policy" headlineSpacing="large">
|
||||
<Controller
|
||||
control={control}
|
||||
name="policy"
|
||||
render={({ field: { onChange, value, name } }) => (
|
||||
<RadioGroup name={name} value={value} onChange={onChange}>
|
||||
{Object.values(MfaPolicy).map((policy) => {
|
||||
const titleProps = policyOptionTitlePropsMap[policy];
|
||||
const title = policyOptionTitleMap[policy];
|
||||
return (
|
||||
<Radio
|
||||
key={policy}
|
||||
isDisabled={isMfaDisabled}
|
||||
className={styles.policyRadio}
|
||||
title={<PolicyOptionTitle {...titleProps} />}
|
||||
value={policy}
|
||||
/>
|
||||
<Radio key={policy} isDisabled={isMfaDisabled} title={title} value={policy} />
|
||||
);
|
||||
})}
|
||||
</RadioGroup>
|
||||
|
|
|
@ -4,8 +4,8 @@ export const expectToClickFactor = async (page: Page, inputName: string) => {
|
|||
await expect(page).toClick(`form label[class$=switch]:has(input[name="${inputName}"])`);
|
||||
};
|
||||
|
||||
export const expectToClickPolicyOption = async (page: Page, inputName: string) => {
|
||||
await expect(page).toClick(`form div[role=radio]:has(input[name=policy][value=${inputName}])`);
|
||||
export const expectToClickPolicyOption = async (page: Page, value: string) => {
|
||||
await expect(page).toClick(`form div[role=radio]:has(input[name=policy][value=${value}])`);
|
||||
};
|
||||
|
||||
export const expectBackupCodeSetupError = async (page: Page) => {
|
||||
|
|
|
@ -20,13 +20,8 @@ const mfa = {
|
|||
'Um den Backup-Code für MFA zu verwenden, müssen andere Faktoren aktiviert sein, um die erfolgreiche Anmeldung Ihrer Benutzer sicherzustellen.',
|
||||
policy: 'Richtlinie',
|
||||
two_step_sign_in_policy: 'Zwei-Schritt-Authentifizierungsrichtlinie bei der Anmeldung',
|
||||
two_step_sign_in_policy_description:
|
||||
'Definieren Sie eine app-weite Anforderung für die zweistufige Authentifizierung bei der Anmeldung.',
|
||||
user_controlled: 'Benutzerkontrolliert',
|
||||
user_controlled_description:
|
||||
'Standardmäßig deaktiviert und nicht obligatorisch, aber Benutzer können es individuell aktivieren.',
|
||||
mandatory: 'Obligatorisch',
|
||||
mandatory_description: 'Erfordern Sie MFA für alle Ihre Benutzer bei jeder Anmeldung.',
|
||||
user_controlled: 'Benutzer haben die Wahl, MFA persönlich zu aktivieren.',
|
||||
mandatory: 'Verpflichtendes MFA für alle Benutzer bei jeder Anmeldung.',
|
||||
unlock_reminder:
|
||||
'Entsperren Sie die MFA zur Sicherheitsüberprüfung durch ein Upgrade auf einen kostenpflichtigen Plan. Zögern Sie nicht, uns zu <a>kontaktieren</a>, wenn Sie Unterstützung benötigen.',
|
||||
view_plans: 'Pläne anzeigen',
|
||||
|
|
|
@ -5,7 +5,7 @@ const mfa = {
|
|||
factors: 'Factors',
|
||||
multi_factors: 'Multi-factors',
|
||||
multi_factors_description:
|
||||
'Users need to verify one of the enabled factors for two-step authentication.',
|
||||
'Users need to verify one of the enabled factors for 2-step authentication.',
|
||||
totp: 'Authenticator app OTP',
|
||||
otp_description: 'Link Google Authenticator, etc., to verify one-time passwords.',
|
||||
webauthn: 'WebAuthn',
|
||||
|
@ -16,14 +16,9 @@ const mfa = {
|
|||
backup_code_error_hint:
|
||||
'To use Backup code for MFA, other factors must be turned on to ensure your users successful sign-in.',
|
||||
policy: 'Policy',
|
||||
two_step_sign_in_policy: 'Two-step authentication policy at sign-in',
|
||||
two_step_sign_in_policy_description:
|
||||
'Define a app-wide 2-step authentication requirement for sign-in.',
|
||||
user_controlled: 'User-controlled',
|
||||
user_controlled_description:
|
||||
'Disabled by default and not mandatory, but users can enable it individually.',
|
||||
mandatory: 'Mandatory',
|
||||
mandatory_description: 'Require MFA for all your users at every sign-in.',
|
||||
two_step_sign_in_policy: '2-step authentication policy at sign-in',
|
||||
user_controlled: 'Users have the choice to enable MFA personally.',
|
||||
mandatory: 'Mandatory MFA for all your users at every sign-in.',
|
||||
unlock_reminder:
|
||||
'Unlock MFA to verification security by upgrading to a paid plan. Don’t hesitate to <a>contact us</a> if you need any assistance.',
|
||||
view_plans: 'View plans',
|
||||
|
|
|
@ -20,14 +20,8 @@ const mfa = {
|
|||
'Para usar el código de respaldo para la autenticación multifactor, deben estar habilitados otros factores para garantizar el inicio de sesión exitoso de tus usuarios.',
|
||||
policy: 'Política',
|
||||
two_step_sign_in_policy: 'Política de autenticación de dos pasos al iniciar sesión',
|
||||
two_step_sign_in_policy_description:
|
||||
'Define un requisito de autenticación de dos pasos en toda la aplicación al iniciar sesión.',
|
||||
user_controlled: 'Controlado por el usuario',
|
||||
user_controlled_description:
|
||||
'Desactivado por defecto y no obligatorio, pero los usuarios pueden habilitarlo individualmente.',
|
||||
mandatory: 'Obligatorio',
|
||||
mandatory_description:
|
||||
'Requiere autenticación multifactor para todos tus usuarios en cada inicio de sesión.',
|
||||
user_controlled: 'Los usuarios tienen la opción de habilitar MFA personalmente.',
|
||||
mandatory: 'MFA obligatorio para todos tus usuarios en cada inicio de sesión.',
|
||||
unlock_reminder:
|
||||
'Desbloquea la autenticación multifactor para mejorar la seguridad mediante la actualización a un plan de pago. No dudes en <a>contactarnos</a> si necesitas ayuda.',
|
||||
view_plans: 'Ver planes',
|
||||
|
|
|
@ -21,14 +21,8 @@ const mfa = {
|
|||
"Pour utiliser le code de secours pour l'authentification multi-facteurs, d'autres facteurs doivent être activés pour garantir la réussite de la connexion de vos utilisateurs.",
|
||||
policy: 'Politique',
|
||||
two_step_sign_in_policy: "Politique d'authentification à deux étapes à la connexion",
|
||||
two_step_sign_in_policy_description:
|
||||
"Définissez une exigence d'authentification à deux étapes dans toute l'application lors de la connexion.",
|
||||
user_controlled: "Contrôlé par l'utilisateur",
|
||||
user_controlled_description:
|
||||
"Désactivé par défaut et non obligatoire, mais les utilisateurs peuvent l'activer individuellement.",
|
||||
mandatory: 'Obligatoire',
|
||||
mandatory_description:
|
||||
"Exigez l'authentification multi-facteurs pour tous vos utilisateurs à chaque connexion.",
|
||||
user_controlled: "Les utilisateurs ont le choix d'activer eux-mêmes la MFA.",
|
||||
mandatory: 'MFA obligatoire pour tous vos utilisateurs à chaque connexion.',
|
||||
unlock_reminder:
|
||||
"Débloquez l'authentification multi-facteurs pour renforcer la sécurité en passant à un abonnement payant. N'hésitez pas à <a>nous contacter</a> si vous avez besoin d'aide.",
|
||||
view_plans: 'Voir les plans',
|
||||
|
|
|
@ -20,14 +20,8 @@ const mfa = {
|
|||
"Per utilizzare il codice di backup per l'autenticazione multi-fattore, è necessario attivare altri fattori per garantire il successo dell'accesso dei tuoi utenti.",
|
||||
policy: 'Politica',
|
||||
two_step_sign_in_policy: "Politica di autenticazione a due passaggi all'accesso",
|
||||
two_step_sign_in_policy_description:
|
||||
"Definisci un requisito di autenticazione a due passaggi per l'applicazione al momento dell'accesso.",
|
||||
user_controlled: "Controllato dall'utente",
|
||||
user_controlled_description:
|
||||
'Disabilitato per impostazione predefinita e non obbligatorio, ma gli utenti possono attivarlo singolarmente.',
|
||||
mandatory: 'Obbligatorio',
|
||||
mandatory_description:
|
||||
"Richiedi l'autenticazione multi-fattore per tutti i tuoi utenti ad ogni accesso.",
|
||||
user_controlled: 'Gli utenti hanno la possibilità di abilitare personalmente la MFA.',
|
||||
mandatory: 'MFA obbligatorio per tutti gli utenti ad ogni accesso.',
|
||||
unlock_reminder:
|
||||
"Sblocca l'autenticazione multi-fattore per verificare la sicurezza passando a un piano a pagamento. Non esitare a <a>contattarci</a> se hai bisogno di assistenza.",
|
||||
view_plans: 'Visualizza i piani',
|
||||
|
|
|
@ -18,12 +18,8 @@ const mfa = {
|
|||
'MFAのバックアップコードを使用するには、他の要因を有効にする必要があり、ユーザーのサインインが成功することを確認します。',
|
||||
policy: 'ポリシー',
|
||||
two_step_sign_in_policy: 'サインイン時の2段階認証ポリシー',
|
||||
two_step_sign_in_policy_description: 'サインイン時のアプリ全体の2段階認証要件を定義します。',
|
||||
user_controlled: 'ユーザーがコントロール',
|
||||
user_controlled_description:
|
||||
'デフォルトでは無効で、強制ではありませんが、ユーザーは個別に有効にできます。',
|
||||
mandatory: '必須',
|
||||
mandatory_description: 'すべてのユーザーに対してすべてのサインインでMFAが必要です。',
|
||||
user_controlled: 'ユーザーは個人でMFAを有効にする選択肢があります。',
|
||||
mandatory: 'すべてのユーザーに対するすべてのサインインでの義務MFA。',
|
||||
unlock_reminder:
|
||||
'セキュリティの確認のためにMFAをロック解除して有料プランにアップグレードします。サポートが必要な場合はお気軽に<a>お問い合わせ</a>ください。',
|
||||
view_plans: 'プランを表示',
|
||||
|
|
|
@ -17,12 +17,8 @@ const mfa = {
|
|||
'MFA에 백업 코드를 사용하려면 다른 요소도 활성화되어 있어야 하며 사용자의 로그인이 성공적으로 이루어지도록 합니다.',
|
||||
policy: '정책',
|
||||
two_step_sign_in_policy: '로그인 시 이중 인증 정책',
|
||||
two_step_sign_in_policy_description: '로그인 시 앱 전체에서 이중 인증 요구 사항을 정의합니다.',
|
||||
user_controlled: '사용자 제어',
|
||||
user_controlled_description:
|
||||
'기본적으로 비활성화되어 있으며 필수 사항은 아니지만 사용자는 개별적으로 활성화할 수 있습니다.',
|
||||
mandatory: '필수',
|
||||
mandatory_description: '모든 사용자에 대한 모든 로그인에서 MFA가 필요합니다.',
|
||||
user_controlled: '사용자는 개인적으로 MFA를 활성화할 수 있습니다.',
|
||||
mandatory: '모든 사용자에 대한 모든 로그인에서의 의무 MFA.',
|
||||
unlock_reminder:
|
||||
'보안을 확인하려면 유료 플랜으로 업그레이드하여 MFA를 잠금 해제하십시오. 도움이 필요하면 언제든지 <a>문의하십시오</a>.',
|
||||
view_plans: '플랜 보기',
|
||||
|
|
|
@ -20,14 +20,8 @@ const mfa = {
|
|||
'Aby używać kodu zapasowego do autoryzacji wieloczynnikowej, inne czynniki muszą być włączone, aby zapewnić udane logowanie użytkowników.',
|
||||
policy: 'Polityka',
|
||||
two_step_sign_in_policy: 'Polityka autoryzacji dwuetapowej podczas logowania',
|
||||
two_step_sign_in_policy_description:
|
||||
'Zdefiniuj wymaganie autoryzacji dwuetapowej na poziomie aplikacji podczas logowania.',
|
||||
user_controlled: 'Kontrolowane przez użytkownika',
|
||||
user_controlled_description:
|
||||
'Domyślnie wyłączone i nieobowiązkowe, ale użytkownicy mogą włączyć je indywidualnie.',
|
||||
mandatory: 'Obowiązkowe',
|
||||
mandatory_description:
|
||||
'Wymagaj autoryzacji wieloczynnikowej dla wszystkich użytkowników podczas każdego logowania.',
|
||||
user_controlled: 'Użytkownicy mają możliwość samodzielnego włączenia MFA.',
|
||||
mandatory: 'Obowiązkowe MFA dla wszystkich użytkowników przy każdym logowaniu.',
|
||||
unlock_reminder:
|
||||
'Odblokuj autoryzację wieloczynnikową, aby zwiększyć bezpieczeństwo, przechodząc na płatny plan. Nie wahaj się <a>skontaktować z nami</a>, jeśli potrzebujesz pomocy.',
|
||||
view_plans: 'Zobacz plany',
|
||||
|
|
|
@ -19,14 +19,8 @@ const mfa = {
|
|||
'Para usar o código de backup para autenticação de vários fatores, outros fatores devem estar ativados para garantir o login bem-sucedido de seus usuários.',
|
||||
policy: 'Política',
|
||||
two_step_sign_in_policy: 'Política de autenticação de dois passos no login',
|
||||
two_step_sign_in_policy_description:
|
||||
'Defina um requisito de autenticação de dois passos em toda a aplicação no momento do login.',
|
||||
user_controlled: 'Controlado pelo usuário',
|
||||
user_controlled_description:
|
||||
'Desativado por padrão e não obrigatório, mas os usuários podem ativá-lo individualmente.',
|
||||
mandatory: 'Obrigatório',
|
||||
mandatory_description:
|
||||
'Exija autenticação de vários fatores para todos os seus usuários em cada login.',
|
||||
user_controlled: 'Os usuários têm a opção de ativar MFA pessoalmente.',
|
||||
mandatory: 'MFA obrigatório para todos os seus usuários em cada login.',
|
||||
unlock_reminder:
|
||||
'Desbloqueie a autenticação de vários fatores para verificar a segurança, fazendo upgrade para um plano pago. Não hesite em <a>entrar em contato conosco</a> se precisar de assistência.',
|
||||
view_plans: 'Ver planos',
|
||||
|
|
|
@ -19,14 +19,8 @@ const mfa = {
|
|||
'Para usar o código de backup para autenticação de vários fatores, outros fatores devem estar ativados para garantir o login bem-sucedido de seus usuários.',
|
||||
policy: 'Política',
|
||||
two_step_sign_in_policy: 'Política de autenticação de dois passos no login',
|
||||
two_step_sign_in_policy_description:
|
||||
'Defina um requisito de autenticação de dois passos em toda a aplicação no momento do login.',
|
||||
user_controlled: 'Controlado pelo usuário',
|
||||
user_controlled_description:
|
||||
'Desativado por padrão e não obrigatório, mas os usuários podem ativá-lo individualmente.',
|
||||
mandatory: 'Obrigatório',
|
||||
mandatory_description:
|
||||
'Exija autenticação de vários fatores para todos os seus usuários em cada login.',
|
||||
user_controlled: 'Os utilizadores têm a opção de ativar a MFA pessoalmente.',
|
||||
mandatory: 'MFA obrigatório para todos os seus utilizadores em cada início de sessão.',
|
||||
unlock_reminder:
|
||||
'Desbloqueie a autenticação de vários fatores para verificar a segurança, fazendo upgrade para um plano pago. Não hesite em <a>entrar em contato conosco</a> se precisar de assistência.',
|
||||
view_plans: 'Ver planos',
|
||||
|
|
|
@ -19,14 +19,8 @@ const mfa = {
|
|||
'Чтобы использовать резервный код для многофакторной аутентификации, другие факторы должны быть включены для обеспечения успешного входа ваших пользователей.',
|
||||
policy: 'Политика',
|
||||
two_step_sign_in_policy: 'Политика двухэтапной аутентификации при входе',
|
||||
two_step_sign_in_policy_description:
|
||||
'Задайте требование двухэтапной аутентификации для всего приложения при входе.',
|
||||
user_controlled: 'Управление пользователем',
|
||||
user_controlled_description:
|
||||
'По умолчанию отключено и не обязательно, но пользователи могут включить его по отдельности.',
|
||||
mandatory: 'Обязательно',
|
||||
mandatory_description:
|
||||
'Требуйте многофакторную аутентификацию для всех ваших пользователей при каждом входе.',
|
||||
user_controlled: 'У пользователей есть выбор включить MFA лично.',
|
||||
mandatory: 'Обязательное MFA для всех ваших пользователей при каждом входе.',
|
||||
unlock_reminder:
|
||||
'Разблокируйте многофакторную аутентификацию для увеличения безопасности с помощью перехода на платный план. Не стесняйтесь <a>связаться с нами</a>, если вам нужна помощь.',
|
||||
view_plans: 'Просмотреть планы',
|
||||
|
|
|
@ -20,14 +20,8 @@ const mfa = {
|
|||
'Çoklu faktör kimlik doğrulamada yedek kodu kullanmak için kullanıcılarınızın başarılı giriş yapmalarını sağlamak için diğer faktörlerin etkinleştirilmiş olması gerekir.',
|
||||
policy: 'Politika',
|
||||
two_step_sign_in_policy: 'Giriş sırasında iki adımlı kimlik doğrulama politikası',
|
||||
two_step_sign_in_policy_description:
|
||||
'Giriş sırasında tüm uygulama genelinde iki adımlı kimlik doğrulama gereksinimi tanımlayın.',
|
||||
user_controlled: 'Kullanıcı tarafından kontrol edilen',
|
||||
user_controlled_description:
|
||||
'Varsayılan olarak devre dışı bırakılmış ve zorunlu değildir, ancak kullanıcılar ayrı ayrı etkinleştirebilirler.',
|
||||
mandatory: 'Zorunlu',
|
||||
mandatory_description:
|
||||
'Her girişte tüm kullanıcılarınız için çoklu faktör kimlik doğrulamayı gerektirin.',
|
||||
user_controlled: "Kullanıcılar MFA'yi kişisel olarak etkinleştirmeye karar verebilir.",
|
||||
mandatory: 'Her girişte tüm kullanıcılar için zorunlu MFA.',
|
||||
unlock_reminder:
|
||||
'Güvenliği doğrulamak için çoklu faktör kimlik doğrulamayı kilit açmak için bir ücretli plana yükselterek etkinleştirin. Yardıma ihtiyacınız varsa çekinmeden <a>bizimle iletişime geçin</a>.',
|
||||
view_plans: 'Planları görüntüle',
|
||||
|
|
|
@ -14,11 +14,8 @@ const mfa = {
|
|||
backup_code_error_hint: '要使用备用代码进行多因素身份验证,必须启用其他因素以确保用户成功登录。',
|
||||
policy: '策略',
|
||||
two_step_sign_in_policy: '登录时的两步验证策略',
|
||||
two_step_sign_in_policy_description: '为登录时的应用程序定义双重验证要求。',
|
||||
user_controlled: '用户控制',
|
||||
user_controlled_description: '默认情况下禁用且非强制,但用户可以单独启用它。',
|
||||
mandatory: '强制',
|
||||
mandatory_description: '要求所有用户在每次登录时进行多因素身份验证。',
|
||||
user_controlled: '用户可以个人选择启用 MFA。',
|
||||
mandatory: '每次登录时对所有用户强制执行 MFA。',
|
||||
unlock_reminder:
|
||||
'解锁多因素身份验证以通过升级到付费计划验证安全性。如果需要帮助,请随时<a>联系我们</a>。',
|
||||
view_plans: '查看计划',
|
||||
|
|
|
@ -14,11 +14,8 @@ const mfa = {
|
|||
backup_code_error_hint: '要使用備用代碼進行多因子驗證,必須啟用其他因素以確保用戶成功登錄。',
|
||||
policy: '策略',
|
||||
two_step_sign_in_policy: '登錄時的雙重驗證策略',
|
||||
two_step_sign_in_policy_description: '為登錄時的應用程序定義雙重驗證要求。',
|
||||
user_controlled: '用戶控制',
|
||||
user_controlled_description: '默認情況下禁用且非強制,但用戶可以單獨啟用它。',
|
||||
mandatory: '強制',
|
||||
mandatory_description: '要求所有用戶在每次登錄時進行多因子驗證。',
|
||||
user_controlled: '用戶可以個人選擇啟用MFA。',
|
||||
mandatory: '每次登錄時對所有用戶強制執行MFA。',
|
||||
unlock_reminder:
|
||||
'解鎖多因子驗證以通過升級到付費計劃驗證安全性。如果需要幫助,請隨時<a>聯繫我們</a>。',
|
||||
view_plans: '查看計劃',
|
||||
|
|
|
@ -14,11 +14,8 @@ const mfa = {
|
|||
backup_code_error_hint: '要使用備用代碼進行多因子驗證,必須啟用其他因素以確保用戶成功登錄。',
|
||||
policy: '策略',
|
||||
two_step_sign_in_policy: '登錄時的雙重驗證策略',
|
||||
two_step_sign_in_policy_description: '為登錄時的應用程序定義雙重驗證要求。',
|
||||
user_controlled: '用戶控制',
|
||||
user_controlled_description: '默認情況下禁用且非強制,但用戶可以單獨啟用它。',
|
||||
mandatory: '強制',
|
||||
mandatory_description: '要求所有用戶在每次登錄時進行多因子驗證。',
|
||||
user_controlled: '用戶可以個人選擇啟用MFA。',
|
||||
mandatory: '每次登錄時對所有用戶強制執行MFA。',
|
||||
unlock_reminder:
|
||||
'解鎖多因子驗證以通過升級到付費計劃驗證安全性。如果需要幫助,請隨時<a>聯繫我們</a>。',
|
||||
view_plans: '查看計劃',
|
||||
|
|
Loading…
Add table
Reference in a new issue