-
Yusuf Akgül authoredYusuf Akgül authored
route.ts 1.66 KiB
import { db } from '@/lib/db'
import { hash } from 'bcrypt'
import { NextResponse } from 'next/server'
export async function POST(req: Request) {
try {
const { username, email, password } = await req.json()
const hashed = await hash(password, 12)
let usernameCheck = username.toLowerCase()
const emailCheck = email.toLowerCase()
const existingUser = await db.user.findUnique({
where: {
email: emailCheck
}
})
if (existingUser) {
throw new Error('email already exists')
}
let isUnique = false;
while (!isUnique) {
const existingUserName = await db.user.findUnique({
where: {
username: usernameCheck
}
})
if (existingUserName) {
usernameCheck = `${username}${Math.floor(Math.random() * 1000)}`
} else {
isUnique = true;
}
}
const user = await db.user.create({
data: {
name: username,
username: usernameCheck,
email: emailCheck,
password: hashed
}
})
return NextResponse.json({
usernameOrEmail: user.email
})
} catch (err: any) {
if (err.message === 'email already exists') {
return new NextResponse(JSON.stringify({
error: err.message
}), { status: 422 }
)
}
return new NextResponse(
JSON.stringify({
error: err.message
}), { status: 500 }
)
}
}