Implemented error handling middleware

This commit is contained in:
Alex Holliday committed 2024-05-27 10:47:14 -07:00
1 parent 992ff5024c
commit 950222f94e
6 files changed
+106 -92

No files matched your search

+16 -19
View File
@@ -21,35 +21,32 @@ const issueToken = (payload) => {
* @param {express.Response} res
* @returns {{success: Boolean, msg: String}}
*/
const registerController = async (req, res) => {
const registerController = async (req, res, next) => {
// joi validation
try {
await registerValidation.validateAsync(req.body);
} catch (error) {
return res
.status(400)
.json({ success: false, msg: error.details[0].message });
error.status = 400;
error.service = SERVICE_NAME;
error.message = error.details[0].message;
next(error);
return;
}
// Check if the user exists
try {
const isUser = await req.db.getUserByEmail(req, res);
if (isUser) {
logger.error("User already exists", {
service: SERVICE_NAME,
userId: isUser._id,
});
return res
.status(400)
.json({ success: false, msg: "User already exists" });
throw new Error("User already exists");
}
} catch (error) {
logger.error(error.message, { service: SERVICE_NAME });
return res.status(500).json({ success: false, msg: error.message });
error.service = SERVICE_NAME;
next(error);
return;
}
// Create a new user
try {
// Create a new user
const newUser = await req.db.insertUser(req, res);
// TODO: Send an email to user
// Will add this later
@@ -63,8 +60,8 @@ const registerController = async (req, res) => {
.status(200)
.json({ success: true, msg: "User created", data: token });
} catch (error) {
logger.error(error.message, { service: SERVICE_NAME });
return res.status(500).json({ success: false, msg: error.message });
error.service = SERVICE_NAME;
next(error);
}
};
@@ -76,7 +73,7 @@ const registerController = async (req, res) => {
* @returns {Promise<Express.Response>}
* @throws {Error}
*/
const loginController = async (req, res) => {
const loginController = async (req, res, next) => {
try {
// Validate input
await loginValidation.validateAsync(req.body);
@@ -104,9 +101,9 @@ const loginController = async (req, res) => {
.status(200)
.json({ success: true, msg: "Found user", data: token });
} catch (error) {
error.status = 500;
// Anything else should be an error
logger.error(error.message, { service: SERVICE_NAME });
return res.status(500).json({ success: false, msg: error.message });
next(error);
}
};