1 | const connect = require('connect');
|
2 | const {
|
3 | middleware: sessionMiddleware,
|
4 | } = require('q3-core-session');
|
5 | const aa = require('express-async-handler');
|
6 | const dep = require('express-validator');
|
7 | const validateBody = require('m2e-validator/lib/middlewareHelper');
|
8 | const { request, response } = require('./postware');
|
9 | const middleware = require('./middleware');
|
10 | const isAuthorized = require('./middleware/isAuthorized');
|
11 | const isVerified = require('./middleware/isLoggedIn');
|
12 |
|
13 | const 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 |
|
22 | const 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 |
|
34 | const 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 |
|
47 | module.exports = {
|
48 | ...dep,
|
49 | redact: isAuthorized,
|
50 | verify: isVerified,
|
51 | isVerified,
|
52 | isAuthorized,
|
53 | compose,
|
54 | check,
|
55 | middleware,
|
56 | };
|