This commit is contained in:
freedakgmail
2025-11-23 03:07:39 +08:00
parent 626d7dddde
commit e92884ae53
679 changed files with 208175 additions and 1183474 deletions
+65
View File
@@ -0,0 +1,65 @@
import { NextRequest, NextResponse } from "next/server"
import { prisma } from "@/lib/prisma"
import bcrypt from "bcryptjs"
import { z } from "zod"
const registerSchema = z.object({
email: z.string().email("请输入有效的邮箱地址"),
password: z.string().min(6, "密码至少6个字符"),
name: z.string().optional(),
})
export async function POST(req: NextRequest) {
try {
const body = await req.json()
const { email, password, name } = registerSchema.parse(body)
// 检查用户是否已存在
const existingUser = await prisma.user.findUnique({
where: { email }
})
if (existingUser) {
return NextResponse.json(
{ error: "该邮箱已被注册" },
{ status: 400 }
)
}
// 加密密码
const hashedPassword = await bcrypt.hash(password, 10)
// 创建用户
const user = await prisma.user.create({
data: {
email,
password: hashedPassword,
name,
},
select: {
id: true,
email: true,
name: true,
createdAt: true,
}
})
return NextResponse.json({
message: "注册成功",
user
})
} catch (error) {
if (error instanceof z.ZodError) {
return NextResponse.json(
{ error: error.errors[0].message },
{ status: 400 }
)
}
console.error("注册失败:", error)
return NextResponse.json(
{ error: "注册失败,请稍后重试" },
{ status: 500 }
)
}
}