You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.3 KiB
53 lines
1.3 KiB
const requestIp = require('request-ip')
|
|
|
|
module.exports = function (req, res, next) {
|
|
// Website you wish to allow to connect
|
|
res.setHeader('Access-Control-Allow-Origin', '*')
|
|
// Request methods you wish to allow
|
|
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE')
|
|
// Request headers you wish to allow
|
|
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,token,authorization')
|
|
//
|
|
req.clientIp = requestIp.getClientIp(req)
|
|
//
|
|
res.done = (pStatus, pErr, pJson) => {
|
|
let status = null
|
|
let error = null
|
|
let json = null
|
|
|
|
if (typeof pStatus === 'number') {
|
|
status = pStatus
|
|
error = pErr
|
|
json = pJson || {}
|
|
} else {
|
|
error = pStatus
|
|
json = pErr || {}
|
|
}
|
|
|
|
if (!error && status >= 400) {
|
|
error = 'Error:401'
|
|
}
|
|
|
|
if (error) {
|
|
status = status || 555
|
|
let errorToSend = {
|
|
error: '',
|
|
httpStatus: status,
|
|
stack: null,
|
|
more: json || {}
|
|
}
|
|
if (!(error instanceof Error)) {
|
|
if (typeof error === 'object') error = JSON.stringify(error)
|
|
error = new Error(error)
|
|
}
|
|
|
|
errorToSend.error = error.message
|
|
errorToSend.stack = error.stack
|
|
|
|
res.status(status).json(errorToSend)
|
|
} else {
|
|
res.json(json)
|
|
}
|
|
}
|
|
next()
|
|
}
|