mirror of
https://github.com/BobbyWibowo/lolisafe.git
synced 2024-12-14 00:16:21 +00:00
feat: improved errorsController.js
mainly handling generic errors
This commit is contained in:
parent
c0e91e205c
commit
1b4b73b67c
@ -13,54 +13,59 @@ const self = {
|
|||||||
|
|
||||||
self.handleError = (req, res, error) => {
|
self.handleError = (req, res, error) => {
|
||||||
if (!res || res.headersSent) {
|
if (!res || res.headersSent) {
|
||||||
console.error('Error: Unexpected missing "res" object or headers alredy sent.')
|
logger.error('Error: Unexpected missing "res" object or headers alredy sent.')
|
||||||
return console.error(error)
|
return logger.error(error)
|
||||||
}
|
|
||||||
|
|
||||||
// Error messages that can be returned to users
|
|
||||||
const isClientError = error instanceof ClientError
|
|
||||||
const isServerError = error instanceof ServerError
|
|
||||||
|
|
||||||
const logStack = (!isClientError && !isServerError) ||
|
|
||||||
(isServerError && error.logStack)
|
|
||||||
if (logStack) {
|
|
||||||
logger.error(error)
|
|
||||||
}
|
|
||||||
|
|
||||||
const statusCode = (isClientError || isServerError)
|
|
||||||
? error.statusCode
|
|
||||||
: 500
|
|
||||||
|
|
||||||
const json = {}
|
|
||||||
|
|
||||||
const description = (isClientError || isServerError)
|
|
||||||
? error.message
|
|
||||||
: 'An unexpected error occurred. Try again?'
|
|
||||||
if (description) {
|
|
||||||
json.description = description
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((isClientError || isServerError) && error.code) {
|
|
||||||
json.code = error.code
|
|
||||||
}
|
}
|
||||||
|
|
||||||
res.header('Cache-Control', 'no-store')
|
res.header('Cache-Control', 'no-store')
|
||||||
|
|
||||||
if (Object.keys(json).length) {
|
// Errors that should be returned to users as JSON payload
|
||||||
json.success = false
|
const isClientError = error instanceof ClientError
|
||||||
return res.status(statusCode).json(json)
|
const isServerError = error instanceof ServerError
|
||||||
|
|
||||||
|
let statusCode = res.statusCode
|
||||||
|
|
||||||
|
if (isClientError || isServerError) {
|
||||||
|
if (isServerError && error.logStack) {
|
||||||
|
logger.error(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
const json = {
|
||||||
|
success: false,
|
||||||
|
description: error.message || 'An unexpected error occurred. Try again?',
|
||||||
|
code: error.code
|
||||||
|
}
|
||||||
|
|
||||||
|
if (statusCode === undefined) {
|
||||||
|
res.status(error.statusCode || 500)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.json(json)
|
||||||
} else {
|
} else {
|
||||||
|
// Generic Errors
|
||||||
|
logger.error(error)
|
||||||
|
|
||||||
|
if (statusCode === undefined) {
|
||||||
|
statusCode = 500
|
||||||
|
}
|
||||||
|
|
||||||
if (self.errorPagesCodes.includes(statusCode)) {
|
if (self.errorPagesCodes.includes(statusCode)) {
|
||||||
return res.status(statusCode).sendFile(path.join(paths.errorRoot, config.errorPages[statusCode]))
|
return res
|
||||||
|
.status(statusCode)
|
||||||
|
.sendFile(path.join(paths.errorRoot, config.errorPages[statusCode]))
|
||||||
} else {
|
} else {
|
||||||
return res.status(statusCode).end()
|
return res
|
||||||
|
.status(statusCode)
|
||||||
|
.end()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.handleNotFound = (req, res) => {
|
self.handleNotFound = (req, res) => {
|
||||||
res.header('Cache-Control', 'no-store')
|
res.header('Cache-Control', 'no-store')
|
||||||
return res.status(404).sendFile(path.join(paths.errorRoot, config.errorPages[404]))
|
return res
|
||||||
|
.status(404)
|
||||||
|
.sendFile(path.join(paths.errorRoot, config.errorPages[404]))
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = self
|
module.exports = self
|
||||||
|
Loading…
Reference in New Issue
Block a user