diff --git a/src/constants/reg.ts b/src/constants/reg.ts index c0d73e6..6c78bcb 100644 --- a/src/constants/reg.ts +++ b/src/constants/reg.ts @@ -9,7 +9,7 @@ export const REG_PHONE = /^.{3,}$/; * * 6-18 characters, including letters, numbers, and underscores */ -export const REG_PWD = /^\w{6,18}$/; +export const REG_PWD = /^[\w.]{6,18}$/; /** Email reg */ export const REG_EMAIL = ///^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; diff --git a/src/hooks/common/form.ts b/src/hooks/common/form.ts index d08978c..9d3536f 100644 --- a/src/hooks/common/form.ts +++ b/src/hooks/common/form.ts @@ -4,6 +4,9 @@ import type { FormInstance } from 'ant-design-vue'; import {REG_CODE_FOUR, REG_EMAIL, REG_PHONE, REG_PWD, REG_USER_NAME} from '@/constants/reg'; import { $t } from '@/locales'; + +const regExpPasswd =/^(?![A-Za-z0-9]+$)(?![a-z0-9\W]+$)(?![A-Za-z\W]+$)(?![A-Z0-9\W]+$)[a-zA-Z0-9\W]{6,}$/; + export function useFormRules() { const patternRules = { username: { @@ -30,7 +33,12 @@ export function useFormRules() { pattern: REG_EMAIL, message: $t('form.email.invalid'), trigger: 'change' - } + }, + userPwd:{ + pattern: regExpPasswd, + message: $t('form.pwd.invalid'), + trigger: 'change' + }, } satisfies Record; const formRules = { @@ -38,7 +46,8 @@ export function useFormRules() { phone: [createRequiredRule($t('form.phone.required')), patternRules.phone], pwd: [createRequiredRule($t('form.pwd.required')), patternRules.pwd], code: [createRequiredRule($t('form.code.required')), patternRules.code], - email: [createRequiredRule($t('form.email.required')), patternRules.email] + email: [createRequiredRule($t('form.email.required')), patternRules.email], + userPwd: [createRequiredRule($t('form.pwd.required')), patternRules.userPwd], } satisfies Record; /** the default required rule */ diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 4d89dbf..cfa2702 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -307,6 +307,8 @@ const local: any = { agreeTerms: 'I have read and agree to the User Agreement and Privacy Policy', code:'Code', password:'Password', + newPassword:'New Password', + oldPassword:'Old Password', confirmPassword:'ConfirmPassword', basicInfo: 'BasicInfo', terms: 'Terms', @@ -981,7 +983,7 @@ const local: any = { }, pwd: { required: 'Please enter password', - invalid: '6-18 characters, including letters, numbers, and underscores' + invalid: 'The password should contain at least uppercase and lowercase letters, numbers, special symbols, and no less than 6 digits' }, confirmPwd: { required: 'Please enter password again', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index b149760..ca8f907 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -307,6 +307,8 @@ const local:any = { agreeTerms: '我已阅读并同意用户协议和隐私政策', code:'验证码', password:'密码', + newPassword:'新密码', + oldPassword:'旧密码', confirmPassword:'再次输入密码', basicInfo: '基本信息', terms: '协议条款', @@ -981,7 +983,7 @@ const local:any = { }, pwd: { required: '请输入密码', - invalid: '密码格式不正确,6-18位字符,包含字母、数字、下划线' + invalid: '密码至少包含大小写字母、数字、特殊符号,且不少于6位' }, confirmPwd: { required: '请输入确认密码', diff --git a/src/service/api/user.ts b/src/service/api/user.ts index c4f7d57..ba400c2 100644 --- a/src/service/api/user.ts +++ b/src/service/api/user.ts @@ -60,3 +60,10 @@ export function doGetUserDeptTree() { method: 'get' }); } + +export function doUpdatePwd(pwdJson: any) { + var url= `/system/user/profile/updatePwd?oldPassword=${pwdJson.oldPassword}&newPassword=${pwdJson.newPassword}`; + return request({ url, method: 'put'}); + +} + diff --git a/src/typings/auto-imports.d.ts b/src/typings/auto-imports.d.ts index 445471a..2b589f5 100644 --- a/src/typings/auto-imports.d.ts +++ b/src/typings/auto-imports.d.ts @@ -114,6 +114,7 @@ declare global { const doPostUser: typeof import('../service/api/user')['doPostUser'] const doPutRole: typeof import('../service/api/role')['doPutRole'] const doPutUser: typeof import('../service/api/user')['doPutUser'] + const doUpdatePwd: typeof import('../service/api/user')['doUpdatePwd'] const eagerComputed: typeof import('@vueuse/core')['eagerComputed'] const editRateLimit: typeof import('../service/api/auth')['editRateLimit'] const effectScope: typeof import('vue')['effectScope'] diff --git a/src/views/_builtin/login/modules/pwd-login.vue b/src/views/_builtin/login/modules/pwd-login.vue index f657c34..5645676 100644 --- a/src/views/_builtin/login/modules/pwd-login.vue +++ b/src/views/_builtin/login/modules/pwd-login.vue @@ -29,7 +29,6 @@ const model = reactive({ const rules = { username: patternRules.username, - password: patternRules.pwd }; async function handleSubmit() { diff --git a/src/views/manage/user/index.vue b/src/views/manage/user/index.vue index 04c89eb..08beafc 100644 --- a/src/views/manage/user/index.vue +++ b/src/views/manage/user/index.vue @@ -1,5 +1,5 @@