import { NextRequest, NextResponse } from "next/server" import { auth } from "@/lib/auth" import { prisma } from "@/lib/prisma" import { hashPassword } from "@/lib/utils" import { logger } from "@/lib/logger" // Mark this route as dynamic to prevent build-time data collection export const dynamic = "force-dynamic" export async function POST(req: NextRequest) { try { const session = await auth() if (!session || session.user.role !== "ADMIN") { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) } const { name, email, password, role } = await req.json() if (!name || !email || !password) { return NextResponse.json( { error: "Name, email, and password are required" }, { status: 400 } ) } // Check if user already exists const existingUser = await prisma.user.findUnique({ where: { email }, }) if (existingUser) { return NextResponse.json( { error: "User with this email already exists" }, { status: 400 } ) } const passwordHash = await hashPassword(password) const user = await prisma.user.create({ data: { name, email, passwordHash, role: role || "USER", }, }) return NextResponse.json( { id: user.id, name: user.name, email: user.email, role: user.role, }, { status: 201 } ) } catch (error) { logger.error("Error creating user", { error: error instanceof Error ? error : new Error(String(error)), }) return NextResponse.json( { error: "Internal server error" }, { status: 500 } ) } }