// app/composables/usePasswordReset.js import { useApi } from './useApi' import { useFlash } from './useFlash' export function usePasswordReset() { const api = useApi() const flash = useFlash() const sending = useState('pwreset:sending', () => false) const resetting = useState('pwreset:resetting', () => false) async function sendResetEmail(email) { if (sending.value) return sending.value = true try { await api.post('/auth/password/forgot', { email }) // 后端无论邮箱是否存在都返回 ok:true,这里统一提示 flash.success('如果该邮箱存在,我们已发送重置邮件,请查收。') } catch (e) { flash.error(e?.data?.detail || e?.message || '发送失败') } finally { sending.value = false } } async function submitNewPassword({ token, password, confirmPassword }) { if (resetting.value) return resetting.value = true try { await api.post('/auth/password/reset', { token, password, confirm_password: confirmPassword, }) flash.success('密码已重置,请使用新密码登录。') return true } catch (e) { flash.error(e?.data?.detail || e?.message || '重置失败') return false } finally { resetting.value = false } } return { sending, resetting, sendResetEmail, submitNewPassword } }