UNPKG

1.4 kBJavaScriptView Raw
1const connect = require('connect');
2const {
3 middleware: sessionMiddleware,
4} = require('q3-core-session');
5const aa = require('express-async-handler');
6const dep = require('express-validator');
7const validateBody = require('m2e-validator/lib/middlewareHelper');
8const { request, response } = require('./postware');
9const middleware = require('./middleware');
10const isAuthorized = require('./middleware/isAuthorized');
11const isVerified = require('./middleware/isLoggedIn');
12
13const flatten = (a = [], b = []) => {
14 const m = connect();
15 if (!a || !a.length) return m;
16 const arr = a.concat(b).flat();
17 arr.forEach(m.use.bind(m));
18 m.root = arr.pop();
19 return m;
20};
21
22const check = (...args) => {
23 const methods = dep.check(...args);
24 methods.respondsWith = (name) =>
25 methods.withMessage((value, { req }) =>
26 req.t(`validations:${name}`, {
27 value,
28 }),
29 );
30
31 return methods;
32};
33
34const compose = (ctr) =>
35 flatten([
36 flatten(ctr.validation, [validateBody]),
37 flatten(ctr.authorization, [
38 isVerified,
39 request,
40 response,
41 ]),
42 sessionMiddleware,
43 ...(ctr.postAuthorization ? ctr.postAuthorization : []),
44 aa(ctr),
45 ]);
46
47module.exports = {
48 ...dep,
49 redact: isAuthorized, // alias
50 verify: isVerified, // alias
51 isVerified,
52 isAuthorized,
53 compose,
54 check,
55 middleware,
56};