switched error handling over to middleware instead

This commit is contained in:
subnub
2024-09-28 09:33:54 -04:00
parent 5f443a7101
commit 374d735a71
10 changed files with 268 additions and 344 deletions
+98 -150
View File
@@ -1,4 +1,4 @@
import { Request, Response } from "express";
import { NextFunction, Request, Response } from "express";
import FileService from "../services/file-service/file-service";
import User, { UserInterface } from "../models/user-model";
import sendShareEmail from "../utils/sendShareEmail";
@@ -292,7 +292,7 @@ class FileController {
}
};
removeLink = async (req: RequestType, res: Response) => {
removeLink = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -304,15 +304,12 @@ class FileController {
const file = await fileService.removeLink(userID, id);
res.send(file);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRemove Public Link Error File Route:", e.message);
}
res.status(500).send("Server error removing link");
} catch (e) {
next(e);
}
};
makePublic = async (req: RequestType, res: Response) => {
makePublic = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -324,15 +321,16 @@ class FileController {
const { file, token } = await fileService.makePublic(userID, fileID);
res.send({ file, token });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nMake Public Error File Route:", e.message);
}
res.status(500).send("Server error making public");
} catch (e) {
next(e);
}
};
getPublicInfo = async (req: RequestType, res: Response) => {
getPublicInfo = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
try {
const id = req.params.id;
const tempToken = req.params.tempToken;
@@ -340,15 +338,16 @@ class FileController {
const file = await fileService.getPublicInfo(id, tempToken);
res.send(file);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Public Info Error File Route:", e.message);
}
res.status(500).send("Server error getting public info");
} catch (e) {
next(e);
}
};
makeOneTimePublic = async (req: RequestType, res: Response) => {
makeOneTimePublic = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -360,16 +359,12 @@ class FileController {
const { file, token } = await fileService.makeOneTimePublic(userID, id);
res.send({ file, token });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nMake One Time Public Link Error File Route:", e.message);
}
res.status(500).send("Server error making public");
} catch (e) {
next(e);
}
};
getFileInfo = async (req: RequestType, res: Response) => {
getFileInfo = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -381,16 +376,16 @@ class FileController {
const file = await fileService.getFileInfo(userID, fileID);
res.send(file);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet File Info Error File Route:", e.message);
}
res.status(500).send("Server error getting file info");
} catch (e) {
next(e);
}
};
getQuickList = async (req: RequestType, res: Response) => {
getQuickList = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -402,16 +397,12 @@ class FileController {
const quickList = await fileService.getQuickList(user, limit);
res.send(quickList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Quick List Error File Route:", e.message);
}
res.status(500).send("Server error getting quick list");
} catch (e) {
next(e);
}
};
getList = async (req: RequestType, res: Response) => {
getList = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -443,16 +434,16 @@ class FileController {
const fileList = await fileService.getList(queryData, sortBy, limit);
res.send(fileList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet File List Error File Route:", e.message);
}
res.status(500).send("Server error getting file list");
} catch (e) {
next(e);
}
};
getDownloadToken = async (req: RequestTypeFullUser, res: Response) => {
getDownloadToken = async (
req: RequestTypeFullUser,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -463,18 +454,15 @@ class FileController {
const tempToken = await fileService.getDownloadToken(user);
res.send({ tempToken });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Download Token Error File Route:", e.message);
}
res.status(500).send("Server error getting download token");
} catch (e) {
next(e);
}
};
getAccessTokenStreamVideo = async (
req: RequestTypeFullUser,
res: Response
res: Response,
next: NextFunction
) => {
if (!req.user) return;
@@ -490,21 +478,15 @@ class FileController {
createStreamVideoCookie(res, streamVideoAccessToken);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log(
"\nGet Access Token Stream Video Fle Route Error:",
e.message
);
}
res.status(500).send("Server error getting video stream token");
} catch (e) {
next(e);
}
};
removeStreamVideoAccessToken = async (
req: RequestTypeFullUser,
res: Response
res: Response,
next: NextFunction
) => {
if (!req.user) return;
@@ -525,16 +507,16 @@ class FileController {
removeStreamVideoCookie(res);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRemove Video Token File Router Error:", e.message);
}
res.status(500).send("Server error removing video stream token");
} catch (e) {
next(e);
}
};
removeTempToken = async (req: RequestTypeFullUser, res: Response) => {
removeTempToken = async (
req: RequestTypeFullUser,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -547,12 +529,8 @@ class FileController {
await fileService.removeTempToken(user, tempToken, currentUUID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRemove Temp Token Error File Route:", e.message);
}
res.status(500).send("Server error removing temp token");
} catch (e) {
next(e);
}
};
@@ -674,7 +652,11 @@ class FileController {
}
};
getSuggestedList = async (req: RequestType, res: Response) => {
getSuggestedList = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -693,16 +675,12 @@ class FileController {
);
return res.send({ folderList, fileList });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Suggested List Error File Route:", e.message);
}
res.status(500).send("Server error getting suggested list");
} catch (e) {
next(e);
}
};
renameFile = async (req: RequestType, res: Response) => {
renameFile = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -715,16 +693,16 @@ class FileController {
await fileService.renameFile(userID, fileID, title);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRename File Error File Route:", e.message);
}
res.status(500).send("Server error renaming file");
} catch (e) {
next(e);
}
};
sendEmailShare = async (req: RequestType, res: Response) => {
sendEmailShare = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -740,16 +718,12 @@ class FileController {
await sendShareEmail(file, respient);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nSend Share Email Error File Route:", e.message);
}
res.status(500).send("Server error sending email link");
} catch (e) {
next(e);
}
};
moveFile = async (req: RequestType, res: Response) => {
moveFile = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -762,16 +736,12 @@ class FileController {
await fileService.moveFile(userID, fileID, parentID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nMove File Error File Route:", e.message);
}
res.status(500).send("Server error moving file");
} catch (e) {
next(e);
}
};
trashFile = async (req: RequestType, res: Response) => {
trashFile = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -783,16 +753,12 @@ class FileController {
const trashedFile = await fileService.trashFile(userID, fileID);
res.send(trashedFile.toObject());
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nTrash File Error File Route:", e.message);
}
res.status(500).send("Server error trashing file");
} catch (e) {
next(e);
}
};
restoreFile = async (req: RequestType, res: Response) => {
restoreFile = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -804,16 +770,12 @@ class FileController {
const file = await fileService.restoreFile(userID, fileID);
res.send(file);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRestore File Error File Route:", e.message);
}
res.status(500).send("Server error restoring file");
} catch (e) {
next(e);
}
};
deleteFile = async (req: RequestType, res: Response) => {
deleteFile = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -825,16 +787,12 @@ class FileController {
await this.chunkService.deleteFile(userID, fileID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nDelete File Error File Route:", e.message);
}
res.status(500).send("Server error deleting file");
} catch (e) {
next(e);
}
};
deleteMulti = async (req: RequestType, res: Response) => {
deleteMulti = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -843,21 +801,15 @@ class FileController {
const userID = req.user._id;
const items = req.body.items;
console.log("items", req.body);
await this.chunkService.deleteMulti(userID, items);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("Delete Multi Error File Route:", e.message);
}
res.status(500).send("Server error deleting multi");
} catch (e) {
next(e);
}
};
trashMulti = async (req: RequestType, res: Response) => {
trashMulti = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -869,16 +821,16 @@ class FileController {
await fileService.trashMulti(userID, items);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nTrash Multi Error File Route:", e.message);
}
res.status(500).send("Server error trashing multi");
} catch (e) {
next(e);
}
};
restoreMulti = async (req: RequestType, res: Response) => {
restoreMulti = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -890,12 +842,8 @@ class FileController {
await fileService.restoreMulti(userID, items);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRestore Multi Error File Route:", e.message);
}
res.status(500).send("Server error restoring multi");
} catch (e) {
next(e);
}
};
}
+69 -84
View File
@@ -1,5 +1,5 @@
import FolderService from "../services/folder-service/folder-service";
import { Request, Response } from "express";
import { NextFunction, Request, Response } from "express";
import ChunkService from "../services/chunk-service/chunk-service";
const folderService = new FolderService();
@@ -21,7 +21,11 @@ const chunkService = new ChunkService();
class FolderController {
constructor() {}
createFolder = async (req: RequestType, res: Response) => {
createFolder = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -34,15 +38,16 @@ class FolderController {
const folder = await folderService.createFolder(userID, name, parent);
res.send(folder);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nUpload Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error creating folder");
} catch (e) {
next(e);
}
};
deleteFolder = async (req: RequestType, res: Response) => {
deleteFolder = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -55,16 +60,16 @@ class FolderController {
await chunkService.deleteFolder(userID, folderID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nDelete Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error deleting folder");
} catch (e) {
next(e);
}
};
getSubfolderFullList = async (req: RequestType, res: Response) => {
getSubfolderFullList = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -76,16 +81,12 @@ class FolderController {
const subfolderList = await folderService.getSubfolderFullList(user, id);
res.send(subfolderList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Subfolder List Error Folder Route:", e.message);
}
res.status(500).send("Server error getting subfolder full list");
} catch (e) {
next(e);
}
};
deleteAll = async (req: RequestType, res: Response) => {
deleteAll = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -96,16 +97,12 @@ class FolderController {
await chunkService.deleteAll(userID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nDelete All Error Folder Route:", e.message);
}
res.status(500).send("Server error deleting all");
} catch (e) {
next(e);
}
};
getInfo = async (req: RequestType, res: Response) => {
getInfo = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -117,16 +114,16 @@ class FolderController {
const folder = await folderService.getFolderInfo(userID, folderID);
res.send(folder);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Info Error Folder Route:", e.message);
}
res.status(500).send("Server error getting user info");
} catch (e) {
next(e);
}
};
getSubfolderList = async (req: RequestType, res: Response) => {
getSubfolderList = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -139,16 +136,16 @@ class FolderController {
await folderService.getFolderSublist(userID, folderID);
res.send({ folderIDList, folderNameList });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nServer error getting subfolder list", e.message);
}
res.status(500).send("");
} catch (e) {
next(e);
}
};
getFolderList = async (req: RequestType, res: Response) => {
getFolderList = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -160,16 +157,12 @@ class FolderController {
const folderList = await folderService.getFolderList(user, query);
res.send(folderList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Folder List Error Folder Route:", e.message);
}
res.status(500).send("Server error getting folder list");
} catch (e) {
next(e);
}
};
moveFolder = async (req: RequestType, res: Response) => {
moveFolder = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -182,16 +175,12 @@ class FolderController {
await folderService.moveFolder(userID, folderID, parentID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nMove Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error moving folder");
} catch (e) {
next(e);
}
};
trashFolder = async (req: RequestType, res: Response) => {
trashFolder = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -203,16 +192,16 @@ class FolderController {
await folderService.trashFolder(userID, folderID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nTrash Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error trashing folder");
} catch (e) {
next(e);
}
};
restoreFolder = async (req: RequestType, res: Response) => {
restoreFolder = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -224,16 +213,16 @@ class FolderController {
await folderService.restoreFolder(userID, folderID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("Restore Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error restore folder");
} catch (e) {
next(e);
}
};
renameFolder = async (req: RequestType, res: Response) => {
renameFolder = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -246,16 +235,16 @@ class FolderController {
await folderService.renameFolder(userID, folderID, title);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRename Folder Error Folder Route:", e.message);
}
res.status(500).send("Server error renaming folder");
} catch (e) {
next(e);
}
};
getMoveFolderList = async (req: RequestType, res: Response) => {
getMoveFolderList = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -278,12 +267,8 @@ class FolderController {
);
res.send(folderList);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Move Folder List Error Folder Route:", e.message);
}
res.status(500).send("Server error getting move folder list");
} catch (e) {
next(e);
}
};
}
+71 -98
View File
@@ -1,6 +1,6 @@
import env from "../enviroment/env";
import UserService from "../services/user-service/user-service";
import { Request, Response } from "express";
import { NextFunction, Request, Response } from "express";
import { UserInterface } from "../models/user-model";
import {
createLoginCookie,
@@ -33,21 +33,17 @@ interface RequestType extends Request {
class UserController {
constructor() {}
getUser = async (req: RequestType, res: Response) => {
getUser = async (req: RequestType, res: Response, next: NextFunction) => {
try {
const user = req.user!;
res.send(user);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet User Route Error:", e.message);
}
res.status(500).send("Server error getting user info");
} catch (e) {
next(e);
}
};
login = async (req: RequestType, res: Response) => {
login = async (req: RequestType, res: Response, next: NextFunction) => {
try {
const body = req.body;
@@ -61,16 +57,16 @@ class UserController {
createLoginCookie(res, accessToken, refreshToken);
res.status(200).send({ user });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nLogin User Route Error:", e.message);
}
res.status(500).send("Server error attempting to login");
} catch (e) {
next(e);
}
};
getToken = async (req: RequestTypeRefresh, res: Response) => {
getToken = async (
req: RequestTypeRefresh,
res: Response,
next: NextFunction
) => {
try {
const user = req.user;
@@ -89,16 +85,12 @@ class UserController {
createLoginCookie(res, accessToken, refreshToken);
res.status(201).send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet Refresh Token User Route Error:", e.message);
}
res.status(500).send("");
} catch (e) {
next(e);
}
};
logout = async (req: RequestType, res: Response) => {
logout = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -112,16 +104,13 @@ class UserController {
createLogoutCookie(res);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nLogout User Route Error:", e.message);
}
} catch (e) {
createLogoutCookie(res);
res.status(500).send("Server error attempting to logout");
next(e);
}
};
logoutAll = async (req: RequestType, res: Response) => {
logoutAll = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) return;
try {
@@ -132,16 +121,12 @@ class UserController {
createLogoutCookie(res);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nLogout All User Route Error:", e.message);
}
res.status(500).send("Server error attempting to logout all");
} catch (e) {
next(e);
}
};
createUser = async (req: RequestType, res: Response) => {
createUser = async (req: RequestType, res: Response, next: NextFunction) => {
if (env.createAcctBlocked) {
res.status(401).send();
return;
@@ -156,16 +141,16 @@ class UserController {
createLoginCookie(res, accessToken, refreshToken);
res.status(201).send({ user, emailSent });
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nCreate User Route Error:", e.message);
}
res.status(500).send("Server error creating user");
} catch (e) {
next(e);
}
};
changePassword = async (req: RequestType, res: Response) => {
changePassword = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -189,16 +174,16 @@ class UserController {
createLoginCookie(res, accessToken, refreshToken);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nChange Password User Route Error:", e.message);
}
res.status(500).send("Server error changing password");
} catch (e) {
next(e);
}
};
refreshStorageSize = async (req: RequestType, res: Response) => {
refreshStorageSize = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -209,16 +194,16 @@ class UserController {
await UserProvider.refreshStorageSize(userID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nRefresh Storage Size User Route Error:", e.message);
}
res.status(500).send("Server error refreshing storage size");
} catch (e) {
next(e);
}
};
getUserDetailed = async (req: RequestType, res: Response) => {
getUserDetailed = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -229,16 +214,12 @@ class UserController {
const userDetailed = await UserProvider.getUserDetailed(userID);
res.send(userDetailed);
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nGet User Detailed User Route Error:", e.message);
}
res.status(500).send("Server error getting full user info");
} catch (e) {
next(e);
}
};
verifyEmail = async (req: RequestType, res: Response) => {
verifyEmail = async (req: RequestType, res: Response, next: NextFunction) => {
try {
const verifyToken = req.body.emailToken;
@@ -253,16 +234,16 @@ class UserController {
createLoginCookie(res, accessToken, refreshToken);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nVerify Email User Route Error:", e.message);
}
res.status(500).send("Server error verifying email");
} catch (e) {
next(e);
}
};
resendVerifyEmail = async (req: RequestType, res: Response) => {
resendVerifyEmail = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
if (!req.user) {
return;
}
@@ -273,32 +254,32 @@ class UserController {
await UserProvider.resendVerifyEmail(userID);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nResend Email User Route Error:", e.message);
}
res.status(500).send("Server error resending verify email");
} catch (e) {
next(e);
}
};
sendPasswordReset = async (req: RequestType, res: Response) => {
sendPasswordReset = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
try {
const email = req.body.email;
await UserProvider.sendPasswordReset(email);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nSend Password Reset Email User Route Error:", e.message);
}
res.status(500).send("Server error sending password reset");
} catch (e) {
next(e);
}
};
resetPassword = async (req: RequestType, res: Response) => {
resetPassword = async (
req: RequestType,
res: Response,
next: NextFunction
) => {
try {
const verifyToken = req.body.passwordToken;
const newPassword = req.body.password;
@@ -306,16 +287,12 @@ class UserController {
await UserProvider.resetPassword(newPassword, verifyToken);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nReset Password User Route Error:", e.message);
}
res.status(500).send("Server error resetting password");
} catch (e) {
next(e);
}
};
addName = async (req: RequestType, res: Response) => {
addName = async (req: RequestType, res: Response, next: NextFunction) => {
if (!req.user) {
return;
}
@@ -327,12 +304,8 @@ class UserController {
await UserProvider.addName(userID, name);
res.send();
} catch (e: unknown) {
if (e instanceof Error) {
console.log("\nAdd Name User Route Error:", e.message);
}
res.status(500).send("Server error adding name");
} catch (e) {
next(e);
}
};
}
+27 -1
View File
@@ -1,6 +1,11 @@
import { NextFunction } from "express";
import e, { NextFunction } from "express";
import { validationResult } from "express-validator";
import { Request, Response } from "express";
import NotAuthorizedError from "../../utils/NotAuthorizedError";
import NotFoundError from "../../utils/NotFoundError";
import InternalServerError from "../../utils/InternalServerError";
import ForbiddenError from "../../utils/ForbiddenError";
import NotValidDataError from "../../utils/NotValidDataError";
export const middlewareValidationFunction = (
req: Request,
@@ -13,3 +18,24 @@ export const middlewareValidationFunction = (
}
next();
};
export const middlewareErrorHandler = (
error: Error,
_req: Request,
res: Response,
_next: NextFunction
) => {
console.log("Express route error: ", error);
if (
error instanceof NotAuthorizedError ||
error instanceof ForbiddenError ||
error instanceof NotFoundError ||
error instanceof InternalServerError ||
error instanceof NotValidDataError
) {
return res.status(error.code).send(error.message);
}
res.status(500).send("Server error");
};
+3
View File
@@ -12,6 +12,7 @@ import compression from "compression";
import http from "http";
import cookieParser from "cookie-parser";
import env from "../enviroment/env";
import { middlewareErrorHandler } from "../middleware/utils/middleware-utils";
// import requestIp from "request-ip";
const app = express();
@@ -61,6 +62,8 @@ app.use(
app.use(userRouter, fileRouter, folderRouter);
app.use(middlewareErrorHandler);
//const nodeMode = process.env.NODE_ENV ? "Production" : "Development/Testing";
//console.log("Node Enviroment Mode:", nodeMode);
-2
View File
@@ -1,12 +1,10 @@
class ForbiddenError extends Error {
code: number;
isCustomError: boolean;
constructor(args: any) {
super(args);
this.code = 403;
this.isCustomError = true;
}
}
-3
View File
@@ -1,12 +1,9 @@
class InternalServerError extends Error {
code: number;
isCustomError: boolean;
constructor(args: any) {
super(args);
this.code = 500;
this.isCustomError = true;
}
}
-2
View File
@@ -1,12 +1,10 @@
class NotAuthorizedError extends Error {
code: number;
isCustomError: boolean;
constructor(args: any) {
super(args);
this.code = 401;
this.isCustomError = true;
}
}
-2
View File
@@ -1,12 +1,10 @@
class NotFoundError extends Error {
code: number;
isCustomError: boolean;
constructor(args: any) {
super(args);
this.code = 404;
this.isCustomError = true;
}
}
-2
View File
@@ -1,12 +1,10 @@
class NotValidDataError extends Error {
code: number;
isCustomError: boolean;
constructor(args: any) {
super(args);
this.code = 403;
this.isCustomError = true;
}
}