Files
1000apps/pages/api/auth/signup.js
T

53 lines
1.3 KiB
JavaScript

import { PrismaClient } from "@prisma/client"
import bcrypt from "bcryptjs"
const prisma = new PrismaClient()
export default async function handler(req, res) {
if (req.method !== "POST") {
return res.status(405).json({ error: "Método não permitido" })
}
const { username, password } = req.body
if (!username || !password) {
return res.status(400).json({ error: "Username e senha são obrigatórios" })
}
if (password.length < 6) {
return res.status(400).json({ error: "Senha deve ter pelo menos 6 caracteres" })
}
try {
// Check if username exists
const existingUser = await prisma.user.findUnique({
where: { username }
})
if (existingUser) {
return res.status(400).json({ error: "Nome de usuário já existe" })
}
// Hash password
const hashedPassword = await bcrypt.hash(password, 12)
// Create user
const user = await prisma.user.create({
data: {
username,
password: hashedPassword,
email: `${username}@1000apps.local`
}
})
return res.status(201).json({
message: "Usuário criado com sucesso",
user: { id: user.id, username: user.username }
})
} catch (error) {
console.error("Signup error:", error)
return res.status(500).json({ error: "Erro interno do servidor" })
} finally {
await prisma.$disconnect()
}
}