@@ -14,11 +14,14 @@ import {
14
14
import { Request , Response } from 'express' ;
15
15
import { User } from '../model/user-model' ;
16
16
import { handleBadRequest , handleConflict , handleInternalError , handleNotFound , handleSuccess } from '../utils/helper' ;
17
+ import { userSchema , UserValidationErrors } from '../types/custom' ;
17
18
18
19
export async function createUser ( req : Request , res : Response ) {
19
20
try {
20
- const { username, email, password } = req . body ;
21
- if ( username && email && password ) {
21
+ const parseResult = userSchema . safeParse ( req . body ) ;
22
+
23
+ if ( parseResult . success ) {
24
+ const { username, email, password } = req . body ;
22
25
const existingUser = await _findUserByUsernameOrEmail ( username , email ) ;
23
26
if ( existingUser ) {
24
27
handleConflict ( res , 'username or email already exists' ) ;
@@ -29,7 +32,13 @@ export async function createUser(req: Request, res: Response) {
29
32
const createdUser = await _createUser ( username , email , hashedPassword ) ;
30
33
handleSuccess ( res , 201 , `Created new user ${ username } successfully` , formatUserResponse ( createdUser ) ) ;
31
34
} else {
32
- handleBadRequest ( res , 'username and/or email and/or password are missing' ) ;
35
+ const required_errors = parseResult . error . errors . filter (
36
+ err => err . message == UserValidationErrors . REQUIRED ,
37
+ ) ;
38
+ if ( required_errors . length > 0 ) {
39
+ handleBadRequest ( res , 'username and/or email and/or password are missing' ) ;
40
+ }
41
+ handleBadRequest ( res , 'invalid username and/or email and/or password' ) ;
33
42
}
34
43
} catch ( err ) {
35
44
console . error ( err ) ;
0 commit comments