base: Fix error logging and reporting, make it better.
Some checks failed
/ deploy (push) Failing after -65h42m50s
Some checks failed
/ deploy (push) Failing after -65h42m50s
This commit is contained in:
parent
a5c7e53802
commit
531c7acefe
4 changed files with 33 additions and 4 deletions
|
@ -18,8 +18,8 @@ export default class AuthenticationRoutes {
|
|||
/** GET: /api/authentication/login */
|
||||
async login(ctx) {
|
||||
let res = await ctx.db.safeCallProc('auth_login', [
|
||||
ctx.req.body.email,
|
||||
ctx.req.body.password,
|
||||
ctx.req.body.email || '',
|
||||
ctx.req.body.password || '',
|
||||
])
|
||||
|
||||
let out = res.results[0][0]
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import MSSQL from 'msnodesqlv8'
|
||||
import { HttpError } from 'flaska'
|
||||
import { HttpErrorInternal } from './error.mjs'
|
||||
|
||||
export function initPool(core, config) {
|
||||
let pool = new MSSQL.Pool(config)
|
||||
|
@ -32,7 +33,7 @@ export function initPool(core, config) {
|
|||
if (err.lineNumber && err.procName) {
|
||||
message = `Error at ${err.procName}:${err.lineNumber} => ${message}`
|
||||
}
|
||||
throw new HttpError(500, message)
|
||||
throw new HttpErrorInternal(message, err)
|
||||
})
|
||||
},
|
||||
promises: pool.promises,
|
||||
|
|
14
base/error.mjs
Normal file
14
base/error.mjs
Normal file
|
@ -0,0 +1,14 @@
|
|||
import { HttpError } from 'flaska'
|
||||
|
||||
export class HttpErrorInternal extends HttpError {
|
||||
constructor(message, inner) {
|
||||
super(500, message);
|
||||
|
||||
Error.captureStackTrace(this, HttpError);
|
||||
|
||||
let proto = Object.getPrototypeOf(this);
|
||||
proto.name = 'HttpErrorInternal';
|
||||
|
||||
this.inner = inner
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
import { Flaska, QueryHandler, JsonHandler, FormidableHandler } from 'flaska'
|
||||
import { Flaska, QueryHandler, JsonHandler, FormidableHandler, HttpError } from 'flaska'
|
||||
import formidable from 'formidable'
|
||||
|
||||
import config from './config.mjs'
|
||||
|
@ -48,6 +48,20 @@ export default class Server {
|
|||
this.flaska.devMode()
|
||||
}
|
||||
|
||||
this.flaska.onerror((err, ctx) => {
|
||||
if (err instanceof HttpError && err.status !== 500) {
|
||||
ctx.status = err.status
|
||||
ctx.log.warn(err.message)
|
||||
} else {
|
||||
ctx.log.error(err.inner || err)
|
||||
ctx.status = 500
|
||||
}
|
||||
ctx.body = {
|
||||
status: ctx.status,
|
||||
message: err.message,
|
||||
}
|
||||
})
|
||||
|
||||
this.flaska.before(function(ctx) {
|
||||
ctx.state.started = new Date().getTime()
|
||||
ctx.req.ip = ctx.req.headers['x-forwarded-for'] || ctx.req.connection.remoteAddress
|
||||
|
|
Loading…
Reference in a new issue