Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
lizhenhua 2024-07-24 19:27:08 +08:00
commit 5f43e35b90
7 changed files with 51 additions and 107 deletions

View File

@ -76,8 +76,9 @@ const user = {
mobile: userInfo.mobile.trim(),
uuid: userInfo.uuid,
code: userInfo.code,
loginType: userInfo.loginType
mobileCodeType: userInfo.mobileCodeType
}
console.log(payload)
return new Promise((resolve, reject) => {
getPhoneCode(payload).then(res => {
resolve()

View File

@ -32,9 +32,8 @@ service.interceptors.request.use(
}
// 处理GET请求参数并加密
if (config.method === 'get' && config.params) {
if (config.params) {
let param = tansParams(config.params)
if (param) {
param = param.slice(0, -1)
param = encryptCBC(param)

View File

@ -102,46 +102,48 @@ export function validPwd(value) {
export function validatePassword(rule, value, callback) {
if (!value) {
return callback(new Error('请输入密码'));
return callback(new Error('请输入密码'))
}
const lengthRegex = /^.{8,}$/;
const uppercaseRegex = /[A-Z]/;
const lowercaseRegex = /[a-z]/;
const digitRegex = /\d/;
const specialCharRegex = /[!@#$%^&*(),.?":{}|<>]/;
const lengthRegex = /^.{8,}$/
const uppercaseRegex = /[A-Z]/
const lowercaseRegex = /[a-z]/
const digitRegex = /\d/
const specialCharRegex = /[!@#$%^&*(),.?":{}|<>]/
if (!lengthRegex.test(value)) {
return callback(new Error('密码必须至少为8个字符'))
}
const checks = [
{ regex: lengthRegex, message: '密码必须至少为8个字符' },
{ regex: uppercaseRegex, message: '密码必须包含至少一个大写字母' },
{ regex: lowercaseRegex, message: '密码必须包含至少一个小写字母' },
{ regex: digitRegex, message: '密码必须包含至少一个数字' },
{ regex: specialCharRegex, message: '密码必须包含至少一个特殊字符' }
];
{ regex: uppercaseRegex, message: '必须包含至少一个大写字母' },
{ regex: lowercaseRegex, message: '必须包含至少一个小写字母' },
{ regex: digitRegex, message: '必须包含至少一个数字' },
{ regex: specialCharRegex, message: '必须包含至少一个特殊字符' }
]
let passedChecks = checks.filter(check => check.regex.test(value)).length;
console.log(checks.filter(check => check.regex.test(value)))
let requiredChecks;
switch ('weak') {
let passedChecks = checks.filter(check => check.regex.test(value)).length
let requiredChecks
switch ('strong') {
case 'weak':
requiredChecks = 1;
break;
requiredChecks = 1
break
case 'medium':
requiredChecks = 2;
break;
requiredChecks = 2
break
case 'strong':
requiredChecks = 3;
break;
requiredChecks = 3
break
case 'very-strong':
requiredChecks = 4;
break;
requiredChecks = 4
break
default:
return callback(new Error('请选择有效的密码强度'));
return callback(new Error('请选择有效的密码强度'))
}
if (passedChecks < requiredChecks) {
return callback(new Error(`密码不符合强度要求`));
return callback(new Error(`密码至少包含 ${requiredChecks} 类字符(大写字母,小写字母,数字,特殊字符)`))
}
callback();
callback()
}

View File

@ -122,7 +122,7 @@
</template>
<script>
import { getCodeImg, getLoginOptions } from '@/api/login'
import { getCodeImg } from '@/api/login'
import Cookies from 'js-cookie'
import { encrypt, decrypt } from '@/utils/jsencrypt'
import dingding from '@/assets/images/dingding.svg'
@ -145,7 +145,8 @@ export default {
mobile: '',
verificationCode: '',
uuid: '',
loginType: ''
loginType: '',
mobileCodeType: 'login'
},
passwordLoginRules: {
username: [{ required: true, trigger: 'blur', message: '请输入您的账号' }],
@ -182,7 +183,6 @@ export default {
created() {
this.getCode()
this.getCookie()
this.fetchLoginOptions()
},
methods: {
getCode() {
@ -202,14 +202,6 @@ export default {
this.loginForm.password = password ? decrypt(password) : ''
this.loginForm.rememberMe = rememberMe === 'true'
},
fetchLoginOptions() {
getLoginOptions().then(res => {
this.supportsPhoneLogin = res.supportsPhoneLogin
this.supportsEmailLogin = res.supportsEmailLogin
}).catch(err => {
console.error('获取登录选项失败', err)
})
},
handleLogin() {
this.$refs.loginForm.validate(valid => {
if (valid) {
@ -243,7 +235,6 @@ export default {
this.$message.error('请先填写手机号')
return
}
this.loginForm.loginType = this.loginMethod
this.$store.dispatch('GetPhoneCode', this.loginForm)
.then(() => {
this.isSendingCode = true

View File

@ -97,7 +97,7 @@
<script>
import { getCodeImg, register } from '@/api/login'
import { validatePassword } from '@/utils/validate'
export default {
name: 'Register',
data() {
@ -135,7 +135,8 @@ export default {
nickName: '',
code: '',
uuid: '',
loginType: 'register'
loginType: 'mobile',
mobileCodeType: 'register'
},
registerRules: {
nickName: [
@ -147,7 +148,7 @@ export default {
],
password: [
{ required: true, trigger: 'blur', message: '请输入您的密码' },
{ validator: this.validatePassword, trigger: 'blur' }
{ validator: validatePassword, trigger: 'blur' }
],
confirmPassword: [
{ required: true, trigger: 'blur', message: '请再次输入您的密码' },
@ -179,15 +180,15 @@ export default {
this.$refs.registerForm.validate(valid => {
if (valid) {
this.loading = true
this.registerForm.loginType = 'mobile'
register(this.registerForm).then(res => {
const username = this.registerForm.username
this.$alert(`<font color='red'>恭喜你,您的账号 ${username} 注册成功!</font>`, '系统提示', {
this.$alert(`<font color="red">恭喜你,您的账号 ${username} 注册成功!</font>`, '系统提示', {
dangerouslyUseHTMLString: true,
type: 'success'
}).then(() => {
this.$router.push('/login')
}).catch(() => {})
}).catch(() => {
})
}).catch(() => {
this.loading = false
if (this.captchaEnabled) {
@ -209,8 +210,6 @@ export default {
this.$message.error('请先填写手机号')
return
}
this.registerForm.loginType = 'register'
this.$store.dispatch('GetPhoneCode', this.registerForm)
.then(() => {
this.isSendingCode = true
@ -246,56 +245,6 @@ export default {
return callback(new Error('必须是有效的电子邮件或电话号码'))
}
callback()
},
//
validatePassword(rule, value, callback) {
if (!value) {
return callback(new Error('请输入密码'))
}
const lengthRegex = /^.{8,}$/
const uppercaseRegex = /[A-Z]/
const lowercaseRegex = /[a-z]/
const digitRegex = /\d/
const specialCharRegex = /[!@#$%^&*(),.?":{}|<>]/
if (!lengthRegex.test(value)) {
return callback(new Error('密码必须至少为8个字符'))
}
const checks = [
{ regex: uppercaseRegex, message: '必须包含至少一个大写字母' },
{ regex: lowercaseRegex, message: '必须包含至少一个小写字母' },
{ regex: digitRegex, message: '必须包含至少一个数字' },
{ regex: specialCharRegex, message: '必须包含至少一个特殊字符' }
]
let passedChecks = checks.filter(check => check.regex.test(value)).length
let requiredChecks
switch ('medium') {
case 'weak':
requiredChecks = 1
break
case 'medium':
requiredChecks = 2
break
case 'strong':
requiredChecks = 3
break
case 'very-strong':
requiredChecks = 4
break
default:
return callback(new Error('请选择有效的密码强度'))
}
if (passedChecks < requiredChecks) {
const messages = checks.map(check => check.message).join('')
return callback(new Error(`密码至少包含 ${requiredChecks} 类字符:${messages}`))
}
callback()
}
}

View File

@ -298,7 +298,7 @@ import {
import { getToken } from '@/utils/auth'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { validPwd } from '@/utils/validate'
import { validPwd, validatePassword } from '@/utils/validate'
import { hashWithSM3AndSalt } from '@/utils/sm'
export default {
@ -409,8 +409,7 @@ export default {
],
password: [
{ required: true, message: '密码不能为空', trigger: 'blur' },
{ min: 8, max: 20, message: '密码长度在8到20个字符', trigger: 'blur' },
{ validator: this.validatePwd, trigger: 'blur' }
{ validator: validatePassword, trigger: 'blur' }
],
roleIds: [
{ required: true, message: '请选择角色', trigger: 'change' }
@ -425,7 +424,6 @@ export default {
}
},
created() {
console.log(hashWithSM3AndSalt('1234567890'))
this.getList()
this.getDeptTree()
this.getConfigKey('sys.user.initPassword').then(response => {
@ -478,6 +476,10 @@ export default {
},
//
handleApprovalStatus(row) {
if (row.roles.length === 0) {
this.$modal.msgError('请先分配用户权限')
return;
}
this.$modal.confirm('确认要审批' + row.userName + '"用户吗?').then(function() {
console.log({ userId: row.userId })
return approvalStatus({ userId: row.userId })

View File

@ -18,6 +18,7 @@
<script>
import { updateUserPwd } from "@/api/system/user";
import { validatePassword } from '@/utils/validate'
export default {
data() {
@ -41,8 +42,7 @@ export default {
],
newPassword: [
{ required: true, message: "新密码不能为空", trigger: "blur" },
{ min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" },
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
{ validator: validatePassword, trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: "确认密码不能为空", trigger: "blur" },