web登录
This commit is contained in:
parent
5889169554
commit
ae2c7d5302
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
|
|
|
|||
|
|
@ -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" },
|
||||
|
|
|
|||
Loading…
Reference in New Issue