diff --git a/src/controllers/user.ts b/src/controllers/user.ts index 8797d97b..e919a476 100644 --- a/src/controllers/user.ts +++ b/src/controllers/user.ts @@ -1,7 +1,7 @@ import { Request, Response, NextFunction } from 'express' import UserService from '../services/user' -import { NotFoundError, BadRequestError } from '../helpers/apiError' +import { NotFoundError, BadRequestError, CustomError } from '../helpers/apiError' import { AuthRequest } from '../types' export const googleLogin = async (req: Request, res: Response, next: NextFunction) => { @@ -38,7 +38,7 @@ export const findUserById = async (req: Request, res: Response, next: NextFuncti const { userId } = req.params return res.json(await UserService.findUserById(userId)) } catch (error) { - next(new NotFoundError('User not found', error)) + next(new CustomError(res, error.status, error.message).sendError) } } diff --git a/src/helpers/apiError.ts b/src/helpers/apiError.ts index d342ed4e..ded3170f 100644 --- a/src/helpers/apiError.ts +++ b/src/helpers/apiError.ts @@ -1,3 +1,5 @@ +import { Response } from 'express' + export default class ApiError extends Error { constructor(readonly statusCode: number, readonly message: string, readonly source?: Error) { super() @@ -33,3 +35,19 @@ export class BadRequestError extends ApiError { super(400, message, source) } } + +export class CustomError { + constructor(readonly res: Response, readonly statusCode: number, readonly message: string) { + this.res = res + this.statusCode = statusCode + this.message = message + } + + get sendError() { + return this.returnError() + } + // Method + returnError() { + return this.res.json({ status: this.statusCode, message: this.message }) + } +} diff --git a/src/routers/user.ts b/src/routers/user.ts index f68376ac..5cdf1a0d 100644 --- a/src/routers/user.ts +++ b/src/routers/user.ts @@ -17,7 +17,7 @@ const router = express.Router() router.get('/', findAllUsers) router.get('/count', getUserCount) router.get('/verify-token', isAuthenticated, getTokenInfo) -router.get('/:userId', isAuthenticated, isOwner, findUserById) +router.get('/:userId', findUserById) router.get('/:userId/public', isAuthenticated, findPublicUserInfo) router.post('/google-authenticate', googleLogin) router.put('/:userId', isAuthenticated, updateUser) diff --git a/src/services/user.ts b/src/services/user.ts index 5b747077..32c5d6e7 100644 --- a/src/services/user.ts +++ b/src/services/user.ts @@ -58,9 +58,9 @@ const findUserById = async (userId: string) => { } } catch (error) { if (error.status) { - return error + throw error } else { - return { status: 500, message: 'Bad Request', error: error } + throw { status: 500, message: 'Bad Request', error: error } } } }