11import { createResponse , encryptPassword , verifyPassword } from "../utils" ;
22
33export async function signup ( stub : any , env : any , body : any ) {
4- if ( ( ! body . email && ! body . username ) || ! body . password ) {
5- return new Response ( JSON . stringify ( { error : "Missing required fields" } ) , { status : 400 , headers : { 'Content-Type' : 'application/json' } } ) ;
6- }
4+ try {
5+ if ( ( ! body . email && ! body . username ) || ! body . password ) {
6+ return createResponse ( undefined , "Missing required fields" , 400 ) ;
7+ }
78
8- const isValidPassword = verifyPassword ( env , body . password ) ;
9- if ( ! isValidPassword ) {
10- const errorMessage = `Password must be at least ${ env . PASSWORD_REQUIRE_LENGTH } characters, ` +
11- `${ env . PASSWORD_REQUIRE_UPPERCASE ? "contain at least one uppercase letter, " : "" } ` +
12- `${ env . PASSWORD_REQUIRE_LOWERCASE ? "contain at least one lowercase letter, " : "" } ` +
13- `${ env . PASSWORD_REQUIRE_NUMBER ? "contain at least one number, " : "" } ` +
14- `${ env . PASSWORD_REQUIRE_SPECIAL ? "contain at least one special character, " : "" } ` ;
15- return createResponse ( undefined , errorMessage , 400 ) ;
16- }
9+ const isValidPassword = verifyPassword ( env , body . password ) ;
10+ if ( ! isValidPassword ) {
11+ const errorMessage = `Password must be at least ${ env . PASSWORD_REQUIRE_LENGTH } characters ` +
12+ `${ env . PASSWORD_REQUIRE_UPPERCASE ? ", contain at least one uppercase letter " : "" } ` +
13+ `${ env . PASSWORD_REQUIRE_LOWERCASE ? ", contain at least one lowercase letter " : "" } ` +
14+ `${ env . PASSWORD_REQUIRE_NUMBER ? ", contain at least one number " : "" } ` +
15+ `${ env . PASSWORD_REQUIRE_SPECIAL ? ", contain at least one special character " : "" } ` ;
16+ return createResponse ( undefined , errorMessage , 400 ) ;
17+ }
1718
18- // Check to see if the username or email already exists
19- let verifyUserResponse = await stub . executeExternalQuery ( `SELECT * FROM auth_users WHERE username = ? OR email = ?` , [ body . username , body . email ] ) ;
20- if ( verifyUserResponse . result . length > 0 ) {
21- return createResponse ( undefined , "Username or email already exists" , 400 ) ;
22- }
19+ // Check to see if the username or email already exists
20+ let verifyUserResponse = await stub . executeExternalQuery ( `SELECT * FROM auth_users WHERE username = ? OR email = ?` , [ body . username , body . email ] ) ;
21+ if ( verifyUserResponse ? .result ? .length > 0 ) {
22+ return createResponse ( undefined , "Username or email already exists" , 400 ) ;
23+ }
2324
24- // Create the user
25- const encryptedPassword = await encryptPassword ( body . password ) ;
26- let createUserResponse = await stub . executeExternalQuery (
27- `INSERT INTO auth_users (username, password, email)
28- VALUES (?, ?, ?)
29- RETURNING id, username, email` ,
30- [ body . username , encryptedPassword , body . email ]
31- ) ;
25+ // Create the user
26+ const encryptedPassword = await encryptPassword ( body . password ) ;
27+ let createUserResponse = await stub . executeExternalQuery (
28+ `INSERT INTO auth_users (username, password, email)
29+ VALUES (?, ?, ?)
30+ RETURNING id, username, email` ,
31+ [ body . username , encryptedPassword , body . email ]
32+ ) ;
3233
33- if ( createUserResponse . result . length === 0 ) {
34- return createResponse ( undefined , "Failed to create user" , 500 ) ;
35- }
34+ console . log ( 'Flag 6' )
35+ if ( createUserResponse ?. result ?. length === 0 ) {
36+ return createResponse ( undefined , "Failed to create user" , 500 ) ;
37+ }
3638
37- // Create a session for the user
38- const sessionToken = crypto . randomUUID ( ) ;
39- let createSessionResponse = await stub . executeExternalQuery (
40- `INSERT INTO auth_sessions (user_id, session_token)
41- VALUES (?, ?)
42- RETURNING user_id, session_token, created_at` ,
43- [ createUserResponse . result [ 0 ] . id , sessionToken ]
44- ) ;
39+ console . log ( 'Flag 7' )
40+ // Create a session for the user
41+ const sessionToken = crypto . randomUUID ( ) ;
42+ let createSessionResponse = await stub . executeExternalQuery (
43+ `INSERT INTO auth_sessions (user_id, session_token)
44+ VALUES (?, ?)
45+ RETURNING user_id, session_token, created_at` ,
46+ [ createUserResponse . result [ 0 ] . id , sessionToken ]
47+ ) ;
4548
46- if ( createSessionResponse . result . length === 0 ) {
47- return createResponse ( undefined , "Failed to create session" , 500 ) ;
48- }
49+ if ( createSessionResponse ? .result ? .length === 0 ) {
50+ return createResponse ( undefined , "Failed to create session" , 500 ) ;
51+ }
4952
50- return createResponse ( createSessionResponse . result [ 0 ] , undefined , 200 ) ;
53+ return createResponse ( createSessionResponse . result [ 0 ] , undefined , 200 ) ;
54+ } catch ( error ) {
55+ console . error ( 'Signup Error:' , error ) ;
56+ return createResponse ( undefined , "Username or email already exists" , 500 ) ;
57+ }
5158}
5259
5360export async function login ( stub : any , body : any ) {
@@ -57,7 +64,7 @@ export async function login(stub: any, body: any) {
5764
5865 const encryptedPassword = await encryptPassword ( body . password ) ;
5966 let verifyUserResponse = await stub . executeExternalQuery ( `SELECT * FROM auth_users WHERE (username = ? OR email = ?) AND password = ?` , [ body . username , body . email , encryptedPassword ] ) ;
60- if ( verifyUserResponse . result . length === 0 ) {
67+ if ( verifyUserResponse ? .result ? .length === 0 ) {
6168 return createResponse ( undefined , "User not found" , 404 ) ;
6269 }
6370
@@ -72,7 +79,7 @@ export async function login(stub: any, body: any) {
7279 [ user . id , sessionToken ]
7380 ) ;
7481
75- if ( createSessionResponse . result . length === 0 ) {
82+ if ( createSessionResponse ? .result ? .length === 0 ) {
7683 return createResponse ( undefined , "Failed to create session" , 500 ) ;
7784 }
7885
0 commit comments