From bbf0349ae70f068ace08ba9623fbf6841ce057a1 Mon Sep 17 00:00:00 2001 From: zhengkunwang223 Date: Fri, 23 Dec 2022 14:50:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/global/form-rules.ts | 33 ++++++++++--------- frontend/src/lang/modules/zh.ts | 2 +- .../host/file-management/create/index.vue | 2 +- .../src/views/website/ssl/create/index.vue | 3 +- .../website/ssl/dns-account/create/index.vue | 2 +- .../views/website/website/create/index.vue | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/frontend/src/global/form-rules.ts b/frontend/src/global/form-rules.ts index 463a77e8c..f3130ba5b 100644 --- a/frontend/src/global/form-rules.ts +++ b/frontend/src/global/form-rules.ts @@ -82,24 +82,11 @@ const checkImageName = (rule: any, value: any, callback: any) => { const checkLinuxName = (rule: any, value: any, callback: any) => { if (value === '' || typeof value === 'undefined' || value == null) { - callback(new Error(i18n.global.t('commons.rule.linuxName'))); + callback(new Error(i18n.global.t('commons.rule.linuxName', ['/\\:*?"<>|']))); } else { - const reg = /^[a-zA-Z0-9]{1}[a-zA-Z0-9_.-]{0,30}$/; + const reg = /^((?!\\|\/|:|\*|\?|<|>|\||'|%).){1,30}$/; if (!reg.test(value) && value !== '') { - callback(new Error(i18n.global.t('commons.rule.linuxName'))); - } else { - callback(); - } - } -}; - -const checkDomain = (rule: any, value: any, callback: any) => { - if (value === '' || typeof value === 'undefined' || value == null) { - callback(new Error(i18n.global.t('commons.rule.domain'))); - } else { - const reg = /^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$/; - if (!reg.test(value) && value !== '') { - callback(new Error(i18n.global.t('commons.rule.domain'))); + callback(new Error(i18n.global.t('commons.rule.linuxName', ['/\\:*?"<>|']))); } else { callback(); } @@ -119,6 +106,20 @@ const checkDatabaseName = (rule: any, value: any, callback: any) => { } }; +const checkDomain = (rule: any, value: any, callback: any) => { + if (value === '' || typeof value === 'undefined' || value == null) { + callback(new Error(i18n.global.t('commons.rule.domain'))); + } else { + const reg = + /^([\w\u4e00-\u9fa5\-\*]{1,100}\.){1,10}([\w\u4e00-\u9fa5\-]{1,24}|[\w\u4e00-\u9fa5\-]{1,24}\.[\w\u4e00-\u9fa5\-]{1,24})$/; + if (!reg.test(value) && value !== '') { + callback(new Error(i18n.global.t('commons.rule.domain'))); + } else { + callback(); + } + } +}; + interface CommonRule { requiredInput: FormItemRule; requiredSelect: FormItemRule; diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 0f94b3569..b6082fde0 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -108,7 +108,7 @@ export default { imageName: '支持英文、中文、数字、:.-_,长度1-30', complexityPassword: '请输入 8 位以上、必须含有字母、数字、特殊符号的密码', commonPassword: '请输入 6 位以上长度密码', - linuxName: '支持英文、数字、._-长度1-30', + linuxName: '长度1-30,名称不能含有{0}等符号', email: '请输入正确的邮箱', number: '请输入正确的数字', ip: '请输入正确的 IP 地址', diff --git a/frontend/src/views/host/file-management/create/index.vue b/frontend/src/views/host/file-management/create/index.vue index df562df18..4af0a1387 100644 --- a/frontend/src/views/host/file-management/create/index.vue +++ b/frontend/src/views/host/file-management/create/index.vue @@ -82,7 +82,7 @@ const handleClose = () => { }; const rules = reactive({ - name: [Rules.requiredInput], + name: [Rules.requiredInput, Rules.linuxName], path: [Rules.requiredInput], isSymlink: [Rules.requiredInput], linkPath: [Rules.requiredInput], diff --git a/frontend/src/views/website/ssl/create/index.vue b/frontend/src/views/website/ssl/create/index.vue index 8e8b3ea33..0d3399cbb 100644 --- a/frontend/src/views/website/ssl/create/index.vue +++ b/frontend/src/views/website/ssl/create/index.vue @@ -106,10 +106,9 @@ let acmeReq = reactive({ }); let dnsAccounts = ref(); let acmeAccounts = ref(); -// let domains = ref([]); let sslForm = ref(); let rules = ref({ - primaryDomain: [Rules.requiredInput], + primaryDomain: [Rules.requiredInput, Rules.domain], acmeAccountId: [Rules.requiredSelectBusiness], dnsAccountId: [Rules.requiredSelectBusiness], provider: [Rules.requiredInput], diff --git a/frontend/src/views/website/ssl/dns-account/create/index.vue b/frontend/src/views/website/ssl/dns-account/create/index.vue index 7a79fb762..66ac327bb 100644 --- a/frontend/src/views/website/ssl/dns-account/create/index.vue +++ b/frontend/src/views/website/ssl/dns-account/create/index.vue @@ -92,7 +92,7 @@ let open = ref(); let loading = ref(false); let accountForm = ref(); let rules = ref({ - name: [Rules.requiredInput], + name: [Rules.requiredInput, Rules.linuxName], type: [Rules.requiredSelect], authorization: { accessKey: [Rules.requiredInput], diff --git a/frontend/src/views/website/website/create/index.vue b/frontend/src/views/website/website/create/index.vue index aef4ba282..6ecd38655 100644 --- a/frontend/src/views/website/website/create/index.vue +++ b/frontend/src/views/website/website/create/index.vue @@ -167,7 +167,7 @@ const website = ref({ }, }); let rules = reactive({ - primaryDomain: [Rules.linuxName], + primaryDomain: [Rules.domain], alias: [Rules.linuxName], type: [Rules.requiredInput], webSiteGroupId: [Rules.requiredSelectBusiness],