Skip to content
Snippets Groups Projects
Commit 920c5574 authored by michael.minelli's avatar michael.minelli
Browse files

Add a middleware for params validation

parent 911cb6c7
No related branches found
No related tags found
No related merge requests found
import * as ExpressValidator from 'express-validator';
import express from 'express';
import { StatusCodes } from 'http-status-codes';
import ApiRequest from '../models/ApiRequest';
class ParamsValidatorMiddleware {
private static _instance: ParamsValidatorMiddleware;
private constructor() { }
public static get instance(): ParamsValidatorMiddleware {
if ( !ParamsValidatorMiddleware._instance ) {
ParamsValidatorMiddleware._instance = new ParamsValidatorMiddleware();
}
return ParamsValidatorMiddleware._instance;
}
validate(validations: Array<ExpressValidator.ValidationChain> | ExpressValidator.Schema): (req: ApiRequest, res: express.Response, next: express.NextFunction) => void {
return async (req: ApiRequest, res: express.Response, next: express.NextFunction) => {
if ( !(validations instanceof Array) ) {
validations = ExpressValidator.checkSchema(validations);
}
await Promise.all(validations.map(validation => validation.run(req)));
const errors = ExpressValidator.validationResult(req);
if ( !errors.isEmpty() ) {
return req.session.sendResponse(res, StatusCodes.BAD_REQUEST, { errors: errors.array() });
}
return next();
};
}
}
export default ParamsValidatorMiddleware.instance;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment