Skip to content
This repository was archived by the owner on Sep 4, 2024. It is now read-only.

Commit 9ae1fd0

Browse files
Refactored responses
1 parent c521c20 commit 9ae1fd0

File tree

4 files changed

+22
-19
lines changed

4 files changed

+22
-19
lines changed

src/controllers/auth.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Request, Response } from "express";
22
import bcrypt from "bcrypt";
3-
import { AuthenticationError, ServerError, SuccessResponse } from "../responses";
3+
import { AuthorizationError, ServerError, SuccessResponse } from "../responses";
44
import JWT from "../helpers/jwt";
55
import Users, { User } from "../database/users";
66

@@ -16,7 +16,7 @@ export default class AuthController {
1616
throw new Error("Email and password combination do not match a user in our system.");
1717
}
1818
} catch (e) {
19-
return AuthenticationError(res, (e as Error).message);
19+
return AuthorizationError(res, (e as Error).message);
2020
}
2121

2222
return SuccessResponse(res, {

src/middleware/auth.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import jwt from "../helpers/jwt";
2-
import { AuthenticationError } from "../responses";
2+
import { BadRequestError } from "../responses";
33
import { NextFunction, Request, Response } from "express";
44
import Users, { User } from "../database/users";
55

66
export default async function AuthMiddleware(req: Request, res: Response, next: NextFunction) {
77
const header = req.get("Authorization") as string;
88
if (!/^Bearer (.+)$/i.test(header)) { // Bearer token is not present
9-
return AuthenticationError(res, "Bad token.");
9+
return BadRequestError(res, "Bad token.");
1010
}
1111

1212
// Extract user ID from bearer token
1313
const token = (/^Bearer (.+)$/i.exec(header) as string[])[1].trim();
1414
const id = jwt.verifyAccessToken(token);
1515
if (!id) { // Invalid Bearer token
16-
return AuthenticationError(res, "Bad/Expired token.");
16+
return BadRequestError(res, "Bad/Expired token.");
1717
}
1818

1919
// Get the user
@@ -26,7 +26,7 @@ export default async function AuthMiddleware(req: Request, res: Response, next:
2626
throw new Error("Expired auth token.");
2727
}
2828
} catch (e) {
29-
return AuthenticationError(res, (e as Error).message);
29+
return BadRequestError(res, (e as Error).message);
3030
}
3131

3232
// Pass the user object to the request and execute subsequent requests

src/responses.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,28 @@ export function ApplicationError(res: Response, code: number, type: string, mess
66
error: {
77
code,
88
type,
9-
message
10-
}
9+
message,
10+
},
1111
});
1212
}
1313

14-
export function InvalidFormDataError(res: Response, message = "Invalid form data!") {
15-
return ApplicationError(res, 400, "InvalidFormData", message);
14+
export function BadRequestError(res: Response, message = "Invalid form data!") {
15+
return ApplicationError(res, 400, "BadRequest", message);
1616
}
1717

18-
export function AuthenticationError(res: Response, message = "User is not Authenticated!") {
19-
return ApplicationError(res, 401, "AuthenticationError", message);
18+
export function AuthorizationError(res: Response, message = "User is not Authenticated!") {
19+
return ApplicationError(res, 401, "Authorization", message);
2020
}
2121

2222
export function ForbiddenError(res: Response, message = "User is forbidden from accessing this resource!") {
23-
return ApplicationError(res, 403, "ForbiddenError", message);
23+
return ApplicationError(res, 403, "Forbidden", message);
2424
}
2525

26-
export function NotFoundError(res: Response, message = "The resource you were looking for was not found on this server.") {
27-
return ApplicationError(res, 404, "NotFoundError", message);
26+
export function NotFoundError(
27+
res: Response,
28+
message = "The resource you were looking for was not found on this server."
29+
) {
30+
return ApplicationError(res, 404, "NotFound", message);
2831
}
2932

3033
export function ConflictError(res: Response, message = "The resource you are trying to create already exists!") {
@@ -38,6 +41,6 @@ export function ServerError(res: Response, message = "Server Error!") {
3841
export function SuccessResponse<T>(res: Response, payload: T, status = 200) {
3942
return res.status(status).json({
4043
success: true,
41-
payload: payload
44+
payload: payload,
4245
});
4346
}

src/validators/auth.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NextFunction, Request, Response } from "express";
22
import Users from "../database/users";
3-
import { ConflictError, InvalidFormDataError } from "../responses";
3+
import { ConflictError, BadRequestError } from "../responses";
44
import Joi from "joi";
55

66
export default class AuthValidator {
@@ -19,7 +19,7 @@ export default class AuthValidator {
1919
const validationResult = schema.validate(req.body);
2020

2121
if (validationResult.error) {
22-
return InvalidFormDataError(res, String(validationResult.error));
22+
return BadRequestError(res, String(validationResult.error));
2323
}
2424

2525
next();
@@ -40,7 +40,7 @@ export default class AuthValidator {
4040
const validationResult = schema.validate(req.body);
4141

4242
if (validationResult.error) {
43-
return InvalidFormDataError(res, String(validationResult.error));
43+
return BadRequestError(res, String(validationResult.error));
4444
} else if (await Users.getUsersWithEmailCount(req.body.email) > 0) {
4545
return ConflictError(res, "This email is not available.");
4646
}

0 commit comments

Comments
 (0)