diff --git a/dashboard/src/i18n/locales/en-US/core/header.json b/dashboard/src/i18n/locales/en-US/core/header.json index 02645c23e..85912641b 100644 --- a/dashboard/src/i18n/locales/en-US/core/header.json +++ b/dashboard/src/i18n/locales/en-US/core/header.json @@ -87,7 +87,7 @@ "newPassword": "New Password", "confirmPassword": "Confirm New Password", "newUsername": "New Username (Optional)", - "passwordHint": "Password must be at least 12 characters", + "passwordHint": "At least 12 characters, including uppercase, lowercase letters, and digits", "confirmPasswordHint": "Please enter new password again to confirm", "usernameHint": "Leave blank to keep current username", "defaultCredentials": "The new AstrBot version has improved security. Please change your password." @@ -95,6 +95,9 @@ "validation": { "passwordRequired": "Please enter password", "passwordMinLength": "Password must be at least 12 characters", + "passwordUppercase": "Password must include at least one uppercase letter", + "passwordLowercase": "Password must include at least one lowercase letter", + "passwordDigit": "Password must include at least one digit", "passwordMatch": "Passwords do not match", "usernameMinLength": "Username must be at least 3 characters" }, diff --git a/dashboard/src/i18n/locales/ru-RU/core/header.json b/dashboard/src/i18n/locales/ru-RU/core/header.json index 38bf45bfe..ca41df042 100644 --- a/dashboard/src/i18n/locales/ru-RU/core/header.json +++ b/dashboard/src/i18n/locales/ru-RU/core/header.json @@ -87,7 +87,7 @@ "newPassword": "Новый пароль", "confirmPassword": "Подтвердите новый пароль", "newUsername": "Новое имя пользователя (опционально)", - "passwordHint": "Пароль должен быть не менее 12 символов", + "passwordHint": "Не менее 12 символов, включая заглавные и строчные буквы, а также цифры", "confirmPasswordHint": "Введите новый пароль еще раз", "usernameHint": "Оставьте пустым, если не хотите менять имя пользователя", "defaultCredentials": "Новая версия AstrBot улучшила безопасность. Пожалуйста, измените пароль." @@ -95,6 +95,9 @@ "validation": { "passwordRequired": "Введите пароль", "passwordMinLength": "Пароль должен быть не менее 12 символов", + "passwordUppercase": "Пароль должен содержать хотя бы одну заглавную букву", + "passwordLowercase": "Пароль должен содержать хотя бы одну строчную букву", + "passwordDigit": "Пароль должен содержать хотя бы одну цифру", "passwordMatch": "Паролы не совпадают", "usernameMinLength": "Имя пользователя должно быть не менее 3 символов" }, diff --git a/dashboard/src/i18n/locales/zh-CN/core/header.json b/dashboard/src/i18n/locales/zh-CN/core/header.json index dc00ef5e4..86cd8928b 100644 --- a/dashboard/src/i18n/locales/zh-CN/core/header.json +++ b/dashboard/src/i18n/locales/zh-CN/core/header.json @@ -87,7 +87,7 @@ "newPassword": "新密码", "confirmPassword": "确认新密码", "newUsername": "新用户名 (可选)", - "passwordHint": "密码长度至少 12 位", + "passwordHint": "长度至少 12 位,且包含大写字母、小写字母和数字", "confirmPasswordHint": "请再次输入新密码以确认", "usernameHint": "留空表示不修改用户名", "defaultCredentials": "默认用户名和密码为 astrbot,请在登录后立即修改以确保安全。" @@ -95,6 +95,9 @@ "validation": { "passwordRequired": "请输入密码", "passwordMinLength": "密码长度至少 12 位", + "passwordUppercase": "密码必须包含至少一个大写字母", + "passwordLowercase": "密码必须包含至少一个小写字母", + "passwordDigit": "密码必须包含至少一个数字", "passwordMatch": "两次输入的密码不一致", "usernameMinLength": "用户名长度至少3位" }, diff --git a/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue b/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue index fab98829a..9cde43453 100644 --- a/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue +++ b/dashboard/src/layouts/full/vertical-header/VerticalHeader.vue @@ -101,7 +101,10 @@ const releasesHeader = computed(() => [ const formValid = ref(true); const passwordRules = computed(() => [ (v: string) => !!v || t('core.header.accountDialog.validation.passwordRequired'), - (v: string) => v.length >= 12 || t('core.header.accountDialog.validation.passwordMinLength') + (v: string) => v.length >= 12 || t('core.header.accountDialog.validation.passwordMinLength'), + (v: string) => /[A-Z]/.test(v) || t('core.header.accountDialog.validation.passwordUppercase'), + (v: string) => /[a-z]/.test(v) || t('core.header.accountDialog.validation.passwordLowercase'), + (v: string) => /\d/.test(v) || t('core.header.accountDialog.validation.passwordDigit') ]); const confirmPasswordRules = computed(() => [ (v: string) => !newPassword.value || !!v || t('core.header.accountDialog.validation.passwordRequired'),