@@ -8,6 +8,24 @@ import { getServerSession } from "next-auth";
88import { authOptions } from "@/app/api/utils/authOptions" ;
99
1010
11+ const errors = {
12+ missingFields : NextResponse . json (
13+ { error : "Missing required fields" }
14+ , { status : 400 }
15+ ) ,
16+ userExists : NextResponse . json (
17+ { error : "User already exists" } ,
18+ { status : 400 }
19+ ) ,
20+ userCreateError : NextResponse . json (
21+ { error : "Could not create user" } ,
22+ { status : 400 }
23+ ) ,
24+ emailError : NextResponse . json (
25+ { error : "Could not send verification email" } ,
26+ { status : 400 }
27+ ) ,
28+ } ;
1129
1230
1331const NEXTAUTH_URL = process . env . NEXTAUTH_URL || "" ;
@@ -63,31 +81,35 @@ async function createUser(email, firstName, lastName) {
6381
6482async function registerUser ( email , firstName , lastName ) {
6583 if ( ! email || ! firstName || ! lastName ) {
66- return NextResponse . json (
67- { error : "Missing required fields" } ,
68- { status : 400 }
69- ) ;
84+ return errors . missingFields ;
7085 }
7186
72- const userRes = await createUser ( email , firstName , lastName )
73- if ( ! userRes )
74- return NextResponse . json ( { ok : false , error : "Could not create user" } , { status : 400 } ) ;
87+ const user = await prisma . user . findUnique ( {
88+ where : {
89+ email : email ,
90+ } ,
91+ } ) ;
92+ if ( user ) {
93+ return errors . userExists ;
94+ } ;
7595
76- const { newUser, activateToken} = userRes
96+ const userRes = await createUser ( email , firstName , lastName ) ;
97+ if ( ! userRes )
98+ return errors . userCreateError ;
7799
78- const res = await sendVerificationEmail ( newUser , activateToken )
79- if ( res . success ) {
80- return NextResponse . json ( { ok : true } , { status : 200 } )
81- }
100+ const { newUser, activateToken } = userRes ;
82101
83- return NextResponse . json ( { ok : false , error : "Could not send verification email" } , { status : 400 } ) ;
84-
85-
102+ const res = await sendVerificationEmail ( newUser , activateToken ) ;
103+ if ( res . success ) {
104+ return NextResponse . json ( { ok : true } , { status : 200 } ) ;
105+ }
106+
107+ return errors . emailError ;
86108}
87109
88110export async function POST ( req ) {
89111
90- const params = req . json ( )
112+ const params = await req . json ( )
91113
92114 const authCheck = new Auth ( null , params )
93115 . requireParams ( [ "email" , "firstName" , "lastName" ] )
0 commit comments