mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(web): add MFA login prompt and security settings UI
Handle MFA challenge in login flow (TOTP code input after password verification, recovery code hint, back navigation). Add admin security settings section with session idle timeout, max sessions per user, MFA policy selector, SSO enforcement toggle with break-glass username, and password policy controls. Propagate new i18n keys to all 21 locales.
This commit is contained in:
@@ -2649,6 +2649,33 @@ export const zhTW: TranslationKeys = {
|
||||
currentPasswordIncorrect: "目前密碼不正確",
|
||||
changePasswordButton: "變更密碼",
|
||||
loginAttemptLimitNote: "登入嘗試限制可在系統設定中配置。",
|
||||
adminHeading: "Admin Security Settings",
|
||||
adminDescription: "Enterprise security policy settings. These apply to all users.",
|
||||
sessionIdleTimeout: "Session Idle Timeout (minutes)",
|
||||
sessionIdleTimeoutDesc: "Automatically log out idle sessions. 0 = disabled.",
|
||||
maxSessionsPerUser: "Max Sessions Per User",
|
||||
maxSessionsPerUserDesc: "Limit concurrent sessions per user. 0 = unlimited.",
|
||||
mfaPolicy: "MFA Policy",
|
||||
mfaPolicyDesc: "Require multi-factor authentication for users.",
|
||||
mfaPolicyOptional: "Optional",
|
||||
mfaPolicyAdminsOnly: "Required for admins",
|
||||
mfaPolicyRequired: "Required for all users",
|
||||
ssoEnforcement: "SSO Enforcement",
|
||||
ssoEnforcementDesc: "Require SSO login for all non-break-glass users.",
|
||||
ssoBreakGlassUsername: "Break Glass Admin Username",
|
||||
ssoBreakGlassUsernameDesc:
|
||||
"This admin can still log in with local credentials when SSO is enforced.",
|
||||
passwordMinLength: "Minimum Password Length",
|
||||
passwordMinLengthDesc: "Minimum number of characters required for passwords.",
|
||||
passwordRequireUppercase: "Require Uppercase",
|
||||
passwordRequireUppercaseDesc: "Require at least one uppercase letter.",
|
||||
passwordRequireNumber: "Require Number",
|
||||
passwordRequireNumberDesc: "Require at least one number.",
|
||||
passwordRequireSpecial: "Require Special Character",
|
||||
passwordRequireSpecialDesc: "Require at least one special character.",
|
||||
passwordPolicyHeading: "Password Policy",
|
||||
securitySettingsSaved: "Security settings saved",
|
||||
securitySettingsFailed: "Failed to save security settings",
|
||||
},
|
||||
people: {
|
||||
heading: "成員",
|
||||
@@ -2940,6 +2967,13 @@ export const zhTW: TranslationKeys = {
|
||||
"Your account is not authorized to access this application. Contact your administrator.",
|
||||
samlUserLimitReached: "User limit reached. Contact your administrator.",
|
||||
ssoEnforcedLocalRestricted: "Local login is restricted to authorized administrators.",
|
||||
mfaRequired: "Enter your authentication code",
|
||||
mfaRecoveryHint: "You can also use a recovery code",
|
||||
verify: "Verify",
|
||||
verifying: "Verifying...",
|
||||
mfaInvalidCode: "Invalid code. Please try again.",
|
||||
mfaEnrollmentRequired:
|
||||
"Your organization requires multi-factor authentication. Please set up MFA in your account settings.",
|
||||
methodSaml: "SAML",
|
||||
passwordManagedByProvider: "密碼由您的身分提供者管理。",
|
||||
enterUsername: "輸入使用者名稱",
|
||||
|
||||
Reference in New Issue
Block a user