update 验证密码强度,并修改密码,在debug模式下登录不需要正确密码
This commit is contained in:
@@ -3,6 +3,10 @@ const urls = {
|
||||
* 登录
|
||||
*/
|
||||
login: ['/login', 'post'],
|
||||
/**
|
||||
* 登录时修改密码
|
||||
*/
|
||||
loginPass: ['/loginPass', 'post'],
|
||||
/**
|
||||
* 登出
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React, { Component } from 'react'
|
||||
import { Button, Form, Input, message as Message } from 'antd'
|
||||
import { Alert, Button, Form, Input, message as Message, Modal } from 'antd'
|
||||
import Container from 'components/container'
|
||||
import { encryptByRSA } from 'util/rsa'
|
||||
import { RSA_PUBLIC_KEY } from 'util/global'
|
||||
@@ -14,6 +14,10 @@ export default class index extends Component {
|
||||
focusPassword: false,
|
||||
|
||||
btnDisabled: true,
|
||||
|
||||
pattern: '',
|
||||
descriptions: '',
|
||||
visible: false,
|
||||
}
|
||||
|
||||
backgroundImage = require(`assets/image/login-bg-0${Math.floor(Math.random() * 4)}.jpg`)
|
||||
@@ -33,9 +37,19 @@ export default class index extends Component {
|
||||
api.login({ account, password })
|
||||
.then(({ success, data, message }) => {
|
||||
if (success) {
|
||||
token.value = data
|
||||
Message.success('登录成功')
|
||||
this.props.history.replace('/')
|
||||
const { passed, pattern, descriptions, token } = data
|
||||
// 简单密码需要更改
|
||||
if (!passed) {
|
||||
this.setState({
|
||||
visible: true,
|
||||
loading: false,
|
||||
btnDisabled: true,
|
||||
pattern,
|
||||
descriptions,
|
||||
})
|
||||
} else {
|
||||
this.onLoginSuccess(token)
|
||||
}
|
||||
} else {
|
||||
this.setState({ loading: false })
|
||||
Message.error(message)
|
||||
@@ -49,8 +63,52 @@ export default class index extends Component {
|
||||
})
|
||||
}
|
||||
|
||||
onLoginPass = values => {
|
||||
this.setState({ loading: true })
|
||||
const account = this.form.current.getFieldValue('account')
|
||||
let { password, newPassword } = values
|
||||
password = encryptByRSA(password, RSA_PUBLIC_KEY)
|
||||
newPassword = encryptByRSA(newPassword, RSA_PUBLIC_KEY)
|
||||
const confirm = newPassword // 前端验证两次密码即可.不需要加密
|
||||
|
||||
api.loginPass({ account, password, newPassword, confirm })
|
||||
.then(({ success, data, message }) => {
|
||||
if (success) {
|
||||
const { passed, pattern, descriptions, token } = data
|
||||
// 简单密码需要更改
|
||||
if (!passed) {
|
||||
this.setState({
|
||||
visible: true,
|
||||
loading: false,
|
||||
btnDisabled: true,
|
||||
pattern,
|
||||
descriptions,
|
||||
})
|
||||
} else {
|
||||
this.onLoginSuccess(token)
|
||||
}
|
||||
} else {
|
||||
this.setState({ loading: false })
|
||||
Message.error(message)
|
||||
}
|
||||
})
|
||||
.catch(({ message }) => {
|
||||
if (typeof message === 'object' && message[0]) {
|
||||
Message.error(message[0].messages[0])
|
||||
}
|
||||
this.setState({ loading: false })
|
||||
})
|
||||
}
|
||||
|
||||
onLoginSuccess(jwtToken) {
|
||||
token.value = jwtToken
|
||||
Message.success('登录成功')
|
||||
this.props.history.replace('/')
|
||||
}
|
||||
|
||||
render() {
|
||||
const { loading, focusUser, focusPassword, btnDisabled } = this.state
|
||||
const { loading, focusUser, focusPassword, btnDisabled, visible, pattern, descriptions } =
|
||||
this.state
|
||||
|
||||
return (
|
||||
<div className="yo-login">
|
||||
@@ -121,6 +179,54 @@ export default class index extends Component {
|
||||
</Form>
|
||||
</Container>
|
||||
</div>
|
||||
<Modal visible={visible} closable={false} footer={false}>
|
||||
<Alert type="error" message="密码过于简单,请修改密码!" />
|
||||
<br />
|
||||
<Form className="yo-form" onFinish={this.onLoginPass}>
|
||||
<div className="yo-form-group">
|
||||
<Form.Item
|
||||
label="旧密码"
|
||||
rules={[{ required: true, message: '请输入旧密码' }]}
|
||||
name="password"
|
||||
>
|
||||
<Input.Password autoComplete="off" placeholder="请输入旧密码" />
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="新密码"
|
||||
rules={[
|
||||
{ required: true, message: '请输入新密码' },
|
||||
// { pattern, message: '密码格式错误' },
|
||||
]}
|
||||
name="newPassword"
|
||||
tooltip={descriptions}
|
||||
>
|
||||
<Input.Password autoComplete="off" placeholder="请输入新密码" />
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="确认新密码"
|
||||
rules={[
|
||||
{ required: true, message: '请确认新密码' },
|
||||
({ getFieldValue }) => ({
|
||||
validator(_, value) {
|
||||
if (!value || getFieldValue('newPassword') === value) {
|
||||
return Promise.resolve()
|
||||
}
|
||||
return Promise.reject(new Error('确认新密码不匹配'))
|
||||
},
|
||||
}),
|
||||
]}
|
||||
name="confirm"
|
||||
>
|
||||
<Input.Password autoComplete="off" placeholder="请确认新密码" />
|
||||
</Form.Item>
|
||||
</div>
|
||||
<Form.Item noStyle>
|
||||
<Button htmlType="submit" type="primary" block loading={loading}>
|
||||
确认
|
||||
</Button>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user