From aaa8f5e3c3c1d34267cd0cdf8f03b6b3374272e9 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Tue, 19 Nov 2024 17:08:38 +0800 Subject: [PATCH] =?UTF-8?q?feat(X-Pack):=20=E5=A2=9E=E5=8A=A0=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E9=99=90=E5=88=B6=E7=99=BB=E5=BD=95=20#12638?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core-frontend/src/locales/tw.ts | 2 +- core/core-frontend/src/locales/zh-CN.ts | 2 +- core/core-frontend/src/views/login/index.vue | 38 +++++++++++++------ de-xpack | 2 +- .../login/dto/AccountLockStatus.java | 22 +++++++++++ 5 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/login/dto/AccountLockStatus.java diff --git a/core/core-frontend/src/locales/tw.ts b/core/core-frontend/src/locales/tw.ts index 589fe44d3b..66f2f802a6 100644 --- a/core/core-frontend/src/locales/tw.ts +++ b/core/core-frontend/src/locales/tw.ts @@ -742,7 +742,7 @@ export default { reset_success: '重置成功', modify_cur_pwd: '修改當前用戶密碼后需要重新登錄', switch_success: '切換成功', - user_name_pattern_error: '只允許數字字母以及._-且必須數字或字母開頭', + user_name_pattern_error: "只允許數字字母以及{'@'}._-且必須數字或字母開頭", pwd_pattern_error: '6-20位且至少一位大寫字母、小寫字母、數字、特殊字符', special_characters_are_not_supported: '不允許特殊字符', phone_format: '請填寫正確格式手機號', diff --git a/core/core-frontend/src/locales/zh-CN.ts b/core/core-frontend/src/locales/zh-CN.ts index c343186b07..df89298b7c 100644 --- a/core/core-frontend/src/locales/zh-CN.ts +++ b/core/core-frontend/src/locales/zh-CN.ts @@ -755,7 +755,7 @@ export default { reset_success: '重置成功', modify_cur_pwd: '修改当前用户密码后需要重新登录', switch_success: '切换成功', - user_name_pattern_error: '只允许数字字母以及._-且必须数字或字母开头', + user_name_pattern_error: "只允许数字字母以及{'@'}._-且必须数字或字母开头", pwd_pattern_error: '6-20位且至少一位大写字母、小写字母、数字、特殊字符', special_characters_are_not_supported: '不允许特殊字符', phone_format: '请填写正确格式手机号', diff --git a/core/core-frontend/src/views/login/index.vue b/core/core-frontend/src/views/login/index.vue index 980fd80901..448bea623e 100644 --- a/core/core-frontend/src/views/login/index.vue +++ b/core/core-frontend/src/views/login/index.vue @@ -51,28 +51,42 @@ const state = reactive({ }, footContent: '' }) -const checkUsername = value => { - if (!value) { - return true +const checkUsername = (rule: any, value: any, callback: any) => { + if (!value || activeName.value === 'ldap') { + return callback() } const pattern = /^[a-zA-Z0-9][a-zA-Z0-9\@._-]*$/ const reg = new RegExp(pattern) - return reg.test(value) + if (!reg.test(value)) { + const msg = t('user.user_name_pattern_error') + callback(new Error(msg)) + } + return callback() } -const validatePwd = value => { - if (!value) { - return true +const validatePwd = (rule: any, value: any, callback: any) => { + if (!value || activeName.value === 'ldap') { + return callback() } const pattern = /^.*(?=.{6,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[~!@#$%^&*()_+\-\={}|":<>?`[\];',.\/])[a-zA-Z0-9~!@#$%^&*()_+\-\={}|":<>?`[\];',.\/]*$/ const regep = new RegExp(pattern) - return regep.test(value) + if (!regep.test(value)) { + const msg = t('user.pwd_pattern_error') + callback(new Error(msg)) + } + return callback() } const rules = reactive({ - username: [{ required: true, message: t('common.required'), trigger: 'blur' }], - password: [{ required: true, message: t('common.required'), trigger: 'blur' }] + username: [ + { required: true, message: t('common.required'), trigger: 'blur' }, + { required: true, validator: checkUsername, trigger: 'blur' } + ], + password: [ + { required: true, message: t('common.required'), trigger: 'blur' }, + { required: true, validator: validatePwd, trigger: 'blur' } + ] }) const activeName = ref('simple') @@ -91,10 +105,10 @@ const handleLogin = () => { if (!formRef.value) return formRef.value.validate(async (valid: boolean) => { if (valid) { - if (!checkUsername(state.loginForm.username) || !validatePwd(state.loginForm.password)) { + /* if (!checkUsername(state.loginForm.username) || !validatePwd(state.loginForm.password)) { ElMessage.error('用户名或密码错误') return - } + } */ const name = state.loginForm.username.trim() const pwd = state.loginForm.password if (!wsCache.get(appStore.getDekey)) { diff --git a/de-xpack b/de-xpack index 0fbbd2f639..b897552524 160000 --- a/de-xpack +++ b/de-xpack @@ -1 +1 @@ -Subproject commit 0fbbd2f6394ea5197285ed51b3bb911413f3732f +Subproject commit b8975525241b57a4f753113bc860c16fbd8fca21 diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/login/dto/AccountLockStatus.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/login/dto/AccountLockStatus.java new file mode 100644 index 0000000000..e79b02bc09 --- /dev/null +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/login/dto/AccountLockStatus.java @@ -0,0 +1,22 @@ +package io.dataease.api.permissions.login.dto; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class AccountLockStatus implements Serializable { + @Serial + private static final long serialVersionUID = 8310029430986389948L; + + private Boolean locked = false; + + private String account; + + private Long unlockTime; + + private Integer relieveTimes; + + private Integer remainderTimes; +}