Skip to content
Snippets Groups Projects
Commit 7f3522c9 authored by Yusuf Akgül's avatar Yusuf Akgül :hatching_chick:
Browse files

implemented email already in use and username generation

parent fe53d5fd
No related branches found
No related tags found
1 merge request!19Feat.auth fixes
Pipeline #36288 failed
......@@ -3,17 +3,43 @@ import { hash } from 'bcrypt'
import { NextResponse } from 'next/server'
export async function POST(req: Request) {
console.log("aaaa", req)
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: username.toLowerCase(),
email: email.toLowerCase(),
username: usernameCheck,
email: emailCheck,
password: hashed
}
})
......@@ -22,24 +48,17 @@ export async function POST(req: Request) {
usernameOrEmail: user.email
})
} catch (err: any) {
return new NextResponse(JSON.stringify({
error: err.message
}), { status: 500 }
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 }
)
}
}
// let isUnique = false;
// while (!isUnique) {
// const existingUserName = await db.user.findUnique({
// where: {
// username: credentials.username
// }
// })
// if (existingUserName) {
// credentials.username = `${credentials.username}${Math.floor(Math.random() * 1000)}`
// } else {
// isUnique = true;
// }
// }
\ No newline at end of file
}
\ No newline at end of file
......@@ -25,6 +25,7 @@ export function UserAuthForm({ type, className, ...props }: UserAuthFormProps) {
const {
register,
handleSubmit,
setError,
formState: { errors },
} = useForm<FormData>({
resolver: zodResolver(userAuthSchema),
......@@ -49,8 +50,12 @@ export function UserAuthForm({ type, className, ...props }: UserAuthFormProps) {
})
if (!res.ok) {
if (res.status === 422) {
setError('email', { type: 'manual', message: 'This email is already in use. Please choose another one.' });
}
setIsLoading(false)
toast({
return toast({
variant: "destructive",
title: "Uh oh! Something went wrong.",
description: "Your sign up request failed. Please try again.",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment