53 lines
1.3 KiB
JavaScript
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()
|
|
}
|
|
} |