diff --git a/mail-vue/src/i18n/en.js b/mail-vue/src/i18n/en.js index 9fb4fd0..1002f57 100644 --- a/mail-vue/src/i18n/en.js +++ b/mail-vue/src/i18n/en.js @@ -255,7 +255,11 @@ const en = { backgroundUrlDesc: 'Image URL', localUpload: ' Local upload', imageLink: 'Image URL', - backgroundWarning: 'Image file size affects website load speed.' + imageLinkErrorMsg: 'Invalid image URL', + backgroundWarning: 'Image file size affects website load speed.', + rulesVerify: 'Rules', + rulesVerifyTitle: 'Trigger After {count} Daily Uses per IP', + botVerifyMsg: 'Please verify that you are human', } export default en diff --git a/mail-vue/src/i18n/index.js b/mail-vue/src/i18n/index.js index c6a5119..b6005a8 100644 --- a/mail-vue/src/i18n/index.js +++ b/mail-vue/src/i18n/index.js @@ -4,8 +4,8 @@ import zh from './zh.js' const i18n = createI18n({ legacy: false, messages: { - en, - zh + zh, + en }, }); diff --git a/mail-vue/src/i18n/zh.js b/mail-vue/src/i18n/zh.js index c1eab35..311428f 100644 --- a/mail-vue/src/i18n/zh.js +++ b/mail-vue/src/i18n/zh.js @@ -255,6 +255,10 @@ const zh = { backgroundUrlDesc: '在线图片链接', localUpload: '本地上传', imageLink: '图片链接', + imageLinkErrorMsg: '图片链接不正确', backgroundWarning: '图片文件大小会影响网站加载速度', + rulesVerify: '规则', + rulesVerifyTitle: 'IP 每天使用 {count} 次后触发', + botVerifyMsg: '请完成人机验证', } export default zh \ No newline at end of file diff --git a/mail-vue/src/init/init.js b/mail-vue/src/init/init.js index 7ed09f0..76e9cd1 100644 --- a/mail-vue/src/init/init.js +++ b/mail-vue/src/init/init.js @@ -6,6 +6,7 @@ import {permsToRouter} from "@/perm/perm.js"; import router from "@/router"; import {websiteConfig} from "@/request/setting.js"; import {cvtR2Url} from "@/utils/convert.js"; +import i18n from "@/i18n/index.js"; export async function init() { document.title = '\u200B' @@ -15,11 +16,12 @@ export async function init() { const accountStore = useAccountStore(); const token = localStorage.getItem('token'); - if (!settingStore.lang) { settingStore.lang = navigator.language.split('-')[0] } + i18n.global.locale.value = settingStore.lang + let setting = null; if (token) { diff --git a/mail-vue/src/layout/account/index.vue b/mail-vue/src/layout/account/index.vue index 1e076f5..1885396 100644 --- a/mail-vue/src/layout/account/index.vue +++ b/mail-vue/src/layout/account/index.vue @@ -103,7 +103,10 @@ :class="verifyShow ? 'turnstile-show' : 'turnstile-hide'" :data-sitekey="settingStore.settings.siteKey" data-callback="onTurnstileSuccess" - > + data-error-callback="onTurnstileError" + > + 人机验证模块加载失败,请刷新浏览器 +
@@ -145,6 +148,7 @@ const accountName = ref(null) const addRef = ref({}) let account = null let turnstileId = null +const botJsError = ref(false) let verifyToken = '' const addForm = reactive({ email: '', @@ -170,11 +174,19 @@ const openSelect = () => { mySelect.value.toggleMenu() } +window.onTurnstileError = (e) => { + console.log('人机验加载失败') + nextTick(() => { + if (!turnstileId) { + turnstileId = window.turnstile.render('.register-turnstile') + } else { + window.turnstile.reset(turnstileId); + } + }) +}; + window.onTurnstileSuccess = (token) => { verifyToken = token; - setTimeout(() => { - verifyShow.value = false - },1500) }; function setName() { @@ -338,14 +350,27 @@ function submit() { }) return } - if (!verifyToken && settingStore.settings.addEmailVerify === 0) { - verifyShow.value = true - if (!turnstileId) { + if (!verifyToken && (settingStore.settings.addEmailVerify === 0 || (settingStore.settings.addEmailVerify === 2 && settingStore.settings.addVerifyOpen))) { + if (!verifyShow.value) { + verifyShow.value = true nextTick(() => { - turnstileId = window.turnstile.render('.add-email-turnstile') + if (!turnstileId) { + try { + turnstileId = window.turnstile.render('.add-email-turnstile') + } catch (e) { + botJsError.value = true + console.log('人机验证js加载失败') + } + } else { + window.turnstile.reset('.add-email-turnstile') + } + }) + } else if (!botJsError.value) { + ElMessage({ + message: t('botVerifyMsg'), + type: "error", + plain: true }) - } else { - window.turnstile.reset(turnstileId) } return; } @@ -357,16 +382,24 @@ function submit() { addForm.email = '' accounts.push(account) verifyToken = '' + settingStore.settings.addVerifyOpen = account.addVerifyOpen ElMessage({ message: t('addSuccessMsg'), type: "success", plain: true }) + verifyShow.value = false userStore.refreshUserInfo() }).catch(res => { if (res.code === 400) { verifyToken = '' - window.turnstile.reset(turnstileId) + if (turnstileId) { + window.turnstile.reset(turnstileId) + } else { + nextTick(() => { + turnstileId = window.turnstile.render('.add-email-turnstile') + }) + } verifyShow.value = true } addLoading.value = false diff --git a/mail-vue/src/views/login/index.vue b/mail-vue/src/views/login/index.vue index 42839a4..152799b 100644 --- a/mail-vue/src/views/login/index.vue +++ b/mail-vue/src/views/login/index.vue @@ -13,11 +13,12 @@ {{settingStore.settings.title}} {{$t('loginTitle')}} {{$t('regTitle')}} -
+