request-password-reset.js
857 Bytes
/**
* 请求密码重置:只有已注册邮箱可以接收重置验证码。
*/
import { AuthError } from './errors.js'
/**
* @param {Object} deps
* @param {import('./index.js').UserRepo} deps.userRepo
* @param {(args: { email: string, purpose: 'reset', locale?: string, ip?: string }) => Promise<{ ok: true }>} deps.sendCode
* @returns {(args: { email: string, locale?: string, ip?: string }) => Promise<{ ok: true }>}
*/
export function makeRequestPasswordReset({ userRepo, sendCode }) {
return async function requestPasswordReset({ email, locale, ip }) {
const normalized = String(email).trim().toLowerCase()
const user = await userRepo.findByEmail(normalized)
if (!user) throw new AuthError({ code: 'USER_NOT_FOUND' })
return sendCode({
email: normalized,
purpose: 'reset',
locale,
ip,
})
}
}