80 lines
2.4 KiB
JavaScript
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
|
|
});
|
|
}
|
|
},
|
|
},
|
|
});
|