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 }); } }, }, });