oak-general-business/es/components/changePassword/byPassword/index.js

80 lines
2.4 KiB
JavaScript

import { encryptPasswordSha1 } from "../../../utils/password";
export default OakComponent({
isList: false,
entity: 'user',
projection: {
id: 1,
name: 1,
nickname: 1,
},
formData: function ({ data: user, features, props }) {
return {
user,
};
},
data: {
failTimes: 0,
mode: 'all',
pwdMin: 8,
pwdMax: 24,
needVerify: false,
regexs: [],
tip: '',
},
lifetimes: {
async ready() {
const system = this.features.application.getApplication().system;
const passwordConfig = system?.config.Password;
const mode = passwordConfig?.mode ?? 'all';
const pwdMin = passwordConfig?.min ?? 8;
const pwdMax = passwordConfig?.max ?? 24;
const needVerify = !!passwordConfig?.verify;
const regexs = (passwordConfig?.regexs && passwordConfig?.regexs.length > 0) ? passwordConfig?.regexs : [];
const tip = passwordConfig?.tip ?? '';
this.setState({
mode,
pwdMin,
pwdMax,
needVerify,
regexs,
tip,
});
}
},
methods: {
async onConfirm(prevPassword, newPassword) {
const { mode } = this.state;
const userId = this.props.oakId;
let prevPwd = prevPassword, newPwd = newPassword;
if (mode === 'sha1') {
prevPwd = encryptPasswordSha1(prevPassword);
newPwd = encryptPasswordSha1(newPassword);
}
const { result } = await this.features.cache.exec('updateUserPassword', {
userId,
prevPassword: prevPwd,
newPassword: newPwd,
});
const { result: resultMessage, times } = result;
if (resultMessage === 'success') {
this.setMessage({
type: 'success',
content: '修改密码成功'
});
this.navigateBack();
}
else {
if (times) {
this.setState({
failTimes: times,
});
}
this.setMessage({
type: 'error',
content: resultMessage
});
}
},
},
});