Errors = require "./Errors" logger = require "logger-sharelatex" AuthenticationController = require '../Authentication/AuthenticationController' module.exports = ErrorController = notFound: (req, res)-> res.status(404) res.render 'general/404', title: "page_not_found" serverError: (req, res)-> res.status(500) res.render 'general/500', title: "Server Error" handleError: (error, req, res, next) -> user = AuthenticationController.getSessionUser(req) if error?.code is 'EBADCSRFTOKEN' logger.warn err: error,url:req.url, method:req.method, user:user, "invalid csrf" res.sendStatus(403) return if error instanceof Errors.NotFoundError logger.warn {err: error, url: req.url}, "not found error" ErrorController.notFound req, res else if error instanceof Errors.TooManyRequestsError logger.warn {err: error, url: req.url}, "too many requests error" res.sendStatus(429) else if error instanceof Errors.InvalidNameError logger.warn {err: error, url: req.url}, "invalid name error" res.status(400) res.send(error.message) else logger.error err: error, url:req.url, method:req.method, user:user, "error passed to top level next middlewear" ErrorController.serverError req, res handleApiError: (error, req, res, next) -> if error instanceof Errors.NotFoundError logger.warn {err: error, url: req.url}, "not found error" res.sendStatus(404) else logger.error err: error, url:req.url, method:req.method, "error passed to top level next middlewear" res.sendStatus(500)