1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/src/backend/routes/ErrorRouter.ts

57 lines
1.5 KiB
TypeScript
Raw Normal View History

2022-04-05 01:37:31 +08:00
import { RenderingMWs } from '../middlewares/RenderingMWs';
import { ErrorCodes, ErrorDTO } from '../../common/entities/Error';
import { Logger } from '../Logger';
import { Express, NextFunction, Request, Response } from 'express';
2016-05-09 23:04:56 +08:00
export class ErrorRouter {
public static route(app: Express): void {
this.addApiErrorHandler(app);
this.addGenericHandler(app);
}
private static addApiErrorHandler(app: Express): void {
2022-04-05 01:37:31 +08:00
app.use('/api/*', RenderingMWs.renderError);
2018-03-31 03:30:30 +08:00
}
private static addGenericHandler(app: Express): void {
2022-04-05 01:37:31 +08:00
app.use(
(err: any, req: Request, res: Response, next: NextFunction): any => {
2020-01-08 05:17:54 +08:00
if (err.name === 'UnauthorizedError') {
// jwt authentication error
res.status(401);
2022-04-05 01:37:31 +08:00
return next(
new ErrorDTO(ErrorCodes.NOT_AUTHENTICATED, 'Invalid token')
);
2020-01-08 05:17:54 +08:00
}
if (err.name === 'ForbiddenError' && err.code === 'EBADCSRFTOKEN') {
// jwt authentication error
res.status(401);
2022-04-05 01:37:31 +08:00
return next(
new ErrorDTO(
ErrorCodes.NOT_AUTHENTICATED,
'Invalid CSRF token',
err,
req
)
);
}
console.log(err);
2020-01-08 05:17:54 +08:00
2018-03-31 03:30:30 +08:00
// Flush out the stack to the console
Logger.error('Unexpected error:');
2017-07-18 05:12:12 +08:00
console.error(err);
2022-04-05 01:37:31 +08:00
return next(
new ErrorDTO(
ErrorCodes.SERVER_ERROR,
'Unknown server side error',
err,
req
)
);
},
RenderingMWs.renderError
);
}
}