import { PasswordReg } from '@/config'; import { INPUT_WIDTH } from '@/constants'; import useSubmitLock from '@/hooks/use-submit-lock'; import { updatePassword } from '@/pages/login/apis'; import { Input as CInput, FormButtons } from '@gpustack/core-ui'; import { useIntl } from '@umijs/max'; import { Form, message } from 'antd'; import React from 'react'; interface FormData { new_password: string; current_password: string; confirm_password?: string; } interface ModifyPasswordFormProps { onCancel: () => void; onSuccess?: () => void; } const ModifyPasswordForm: React.FC = ({ onCancel, onSuccess }) => { const [form] = Form.useForm(); const intl = useIntl(); const { guard, run, release } = useSubmitLock(); const handleSubmit = () => { guard(() => form.submit()); }; const onFinish = async (values: FormData) => { await run(async () => { await updatePassword({ new_password: values.new_password, current_password: values.current_password }); message.success(intl.formatMessage({ id: 'common.message.success' })); onSuccess?.(); }); }; return (
name="current_password" rules={[ { required: true, message: intl.formatMessage( { id: 'common.form.rule.input' }, { name: intl.formatMessage({ id: 'users.form.currentpassword' }) } ) } ]} > name="new_password" rules={[ { required: true, pattern: PasswordReg, message: intl.formatMessage({ id: 'users.form.rule.password' }) } ]} > ({ validator(_, value) { if (!value || getFieldValue('new_password') === value) { return Promise.resolve(); } return Promise.reject( new Error( intl.formatMessage({ id: 'users.password.confirm.error' }) ) ); } }) ]} > ); }; ModifyPasswordForm.displayName = 'ModifyPasswordForm'; export default ModifyPasswordForm;