sanitize.js 887 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. const validator = require('validator');
  2. const { isSanitizer } = require('../utils/filters');
  3. const selectFields = require('../utils/select-fields');
  4. module.exports = (fields, locations) => {
  5. const sanitizers = [];
  6. fields = Array.isArray(fields) ? fields : [fields];
  7. const middleware = (req, res, next) => {
  8. selectFields(req, { fields, locations, sanitizers });
  9. next();
  10. };
  11. Object.keys(validator)
  12. .filter(isSanitizer)
  13. .forEach(methodName => {
  14. const sanitizerFn = validator[methodName];
  15. middleware[methodName] = (...options) => {
  16. sanitizers.push({
  17. sanitizer: sanitizerFn,
  18. options
  19. });
  20. return middleware;
  21. };
  22. });
  23. middleware.customSanitizer = sanitizer => {
  24. sanitizers.push({
  25. sanitizer,
  26. custom: true,
  27. options: []
  28. });
  29. return middleware;
  30. };
  31. return middleware;
  32. };