| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- const { validationResult } = require("express-validator");
- const signale = require("signale");
- const { logger } = require("../config/winston");
- const { CustomError } = require("../utils");
- const env = require("../env");
- // export const ip: Handler = (req, res, next) => {
- // req.realIP =
- // (req.headers["x-real-ip"] as string) || req.connection.remoteAddress || "";
- // return next();
- // };
- /**
- * @type {import("express").ErrorRequestHandler}
- */
- function error(error, _req, res, _next) {
- if (env.isDev) {
- signale.fatal(error);
- }
- if (error instanceof CustomError) {
- return res.status(error.statusCode || 500).json({ error: error.message });
- }
- return res.status(500).json({ error: "An error occurred." });
- };
- function verify(template) {
- return function (req, res, next) {
- const errors = validationResult(req);
- if (!errors.isEmpty()) {
- const accepts = req.accepts(["json", "html"]);
- const message = errors.array()[0].msg;
- if (template && accepts === "html") {
- return res.render(template, {
- layout: null,
- error: message
- });
- }
- throw new CustomError(message, 400);
- }
- return next();
- }
- }
- // export const query: Handler = (req, res, next) => {
- // const { admin } = req.user || {};
- // if (
- // typeof req.query.limit !== "undefined" &&
- // typeof req.query.limit !== "string"
- // ) {
- // return res.status(400).json({ error: "limit query is not valid." });
- // }
- // if (
- // typeof req.query.skip !== "undefined" &&
- // typeof req.query.skip !== "string"
- // ) {
- // return res.status(400).json({ error: "skip query is not valid." });
- // }
- // if (
- // typeof req.query.search !== "undefined" &&
- // typeof req.query.search !== "string"
- // ) {
- // return res.status(400).json({ error: "search query is not valid." });
- // }
- // const limit = parseInt(req.query.limit) || 10;
- // const skip = parseInt(req.query.skip) || 0;
- // req.context = {
- // limit: limit > 50 ? 50 : limit,
- // skip,
- // all: admin ? req.query.all === "true" : false
- // };
- // next();
- // };
- module.exports = {
- error,
- verify,
- }
|