import { type NextRequest, NextResponse } from "next/server"; import { eq } from "drizzle-orm"; import { db } from "~/server/db"; import { users } from "~/server/db/schema"; import { sendPasswordResetForUser } from "~/lib/password-reset"; export async function POST(request: NextRequest) { try { const { email } = (await request.json()) as { email: string }; if (!email || typeof email !== "string") { return NextResponse.json({ error: "Email is required" }, { status: 400 }); } const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { return NextResponse.json( { error: "Invalid email format" }, { status: 400 }, ); } const user = await db.query.users.findFirst({ where: eq(users.email, email.toLowerCase()), columns: { id: true }, }); if (!user) { return NextResponse.json( { success: true, message: "If an account with that email exists, password reset instructions have been sent.", }, { status: 200 }, ); } await sendPasswordResetForUser(user.id); return NextResponse.json( { success: true, message: "If an account with that email exists, password reset instructions have been sent.", }, { status: 200 }, ); } catch (error) { console.error("Password reset error:", error); return NextResponse.json( { error: "An error occurred while processing your request" }, { status: 500 }, ); } }