not-node 5.0.22 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/bin/not-deploy.js +52 -0
- package/index.js +21 -19
- package/package.json +1 -1
- package/src/app.js +61 -58
- package/src/auth/abstract.js +17 -19
- package/src/auth/const.js +8 -12
- package/src/auth/fields.js +143 -124
- package/src/auth/index.js +14 -14
- package/src/auth/roles.js +64 -63
- package/src/auth/routes.js +89 -54
- package/src/auth/rules.js +63 -63
- package/src/auth/session.js +60 -62
- package/src/bootstrap/form.js +13 -13
- package/src/bootstrap/logic.js +45 -41
- package/src/bootstrap/model.js +14 -17
- package/src/bootstrap/route.js +132 -53
- package/src/common.js +86 -79
- package/src/core/fields/ID.js +6 -6
- package/src/core/fields/__closed.js +3 -3
- package/src/core/fields/__latest.js +3 -3
- package/src/core/fields/__version.js +3 -3
- package/src/core/fields/__versions.js +3 -3
- package/src/core/fields/_id.js +6 -6
- package/src/core/fields/active.js +9 -9
- package/src/core/fields/codeName.js +9 -9
- package/src/core/fields/createdAt.js +17 -17
- package/src/core/fields/default.js +9 -9
- package/src/core/fields/description.js +11 -11
- package/src/core/fields/email.js +9 -9
- package/src/core/fields/enabled.js +9 -9
- package/src/core/fields/expiredAt.js +16 -16
- package/src/core/fields/height.js +11 -11
- package/src/core/fields/ip.js +10 -10
- package/src/core/fields/objectId.js +10 -10
- package/src/core/fields/owner.js +13 -13
- package/src/core/fields/ownerModel.js +11 -11
- package/src/core/fields/price.js +11 -11
- package/src/core/fields/requiredObject.js +10 -10
- package/src/core/fields/session.js +10 -10
- package/src/core/fields/size.js +11 -11
- package/src/core/fields/telephone.js +9 -9
- package/src/core/fields/title.js +15 -15
- package/src/core/fields/updatedAt.js +17 -17
- package/src/core/fields/userId.js +11 -12
- package/src/core/fields/uuid.js +11 -11
- package/src/core/fields/validators/email.js +6 -4
- package/src/core/fields/validators/owner.js +6 -4
- package/src/core/fields/width.js +11 -11
- package/src/domain.js +435 -431
- package/src/env.js +23 -23
- package/src/error.js +20 -23
- package/src/exceptions/db.js +23 -0
- package/src/exceptions/http.js +43 -0
- package/src/fields/index.js +106 -111
- package/src/form/fabric.js +19 -24
- package/src/form/form.js +195 -186
- package/src/form/index.js +2 -2
- package/src/generic/index.js +2 -0
- package/src/generic/logic.js +595 -0
- package/src/generic/route.js +76 -0
- package/src/init/additional.js +7 -7
- package/src/init/app.js +75 -68
- package/src/init/bodyparser.js +14 -14
- package/src/init/compression.js +6 -7
- package/src/init/core.js +12 -12
- package/src/init/cors.js +22 -24
- package/src/init/db/index.js +41 -43
- package/src/init/db/ioredis.js +28 -20
- package/src/init/db/mongoose.js +42 -32
- package/src/init/db/redis.js +59 -48
- package/src/init/env.js +44 -36
- package/src/init/express.js +18 -21
- package/src/init/fileupload.js +8 -10
- package/src/init/http.js +65 -47
- package/src/init/index.js +141 -148
- package/src/init/informer.js +7 -9
- package/src/init/methodoverride.js +4 -6
- package/src/init/middleware.js +23 -26
- package/src/init/modules.js +4 -4
- package/src/init/monitoring.js +8 -8
- package/src/init/rateLimiter.js +53 -45
- package/src/init/routes.js +67 -69
- package/src/init/security.js +37 -33
- package/src/init/sequence.js +111 -107
- package/src/init/sequence.standart.js +54 -56
- package/src/init/sessions/index.js +21 -21
- package/src/init/sessions/mongoose.js +49 -36
- package/src/init/sessions/redis.js +28 -27
- package/src/init/static.js +53 -40
- package/src/init/template.js +17 -17
- package/src/lib.js +230 -200
- package/src/manifest/batchRunner.js +26 -25
- package/src/manifest/initializator/forms.js +24 -24
- package/src/manifest/initializator/index.js +8 -10
- package/src/manifest/initializator/manifests.js +45 -42
- package/src/manifest/initializator/models.js +37 -34
- package/src/manifest/manifest.filter.js +130 -97
- package/src/manifest/manifest.js +103 -77
- package/src/manifest/module.js +350 -360
- package/src/manifest/registrator/fields.js +90 -85
- package/src/manifest/registrator/forms.js +47 -47
- package/src/manifest/registrator/index.js +14 -16
- package/src/manifest/registrator/locales.js +17 -16
- package/src/manifest/registrator/logics.js +66 -64
- package/src/manifest/registrator/models.js +64 -62
- package/src/manifest/registrator/routes.js +171 -132
- package/src/manifest/registrator/routes.ws.js +109 -103
- package/src/manifest/route.js +216 -161
- package/src/model/buildValidator.js +53 -42
- package/src/model/default.js +304 -286
- package/src/model/enrich.js +69 -61
- package/src/model/increment.js +124 -137
- package/src/model/proto.js +179 -148
- package/src/model/routine.js +85 -76
- package/src/model/utils.js +33 -0
- package/src/model/versioning.js +148 -130
- package/src/obsolete.js +12 -8
- package/src/parser.js +29 -22
- package/src/repos.js +29 -31
- package/src/rollup.js +75 -65
- package/src/shell.helpers.js +28 -28
- package/static.js +31 -0
- package/src/generic/router.js +0 -16
- package/src/manifest/module.models.js +0 -0
- package/src/manifest/module.status.js +0 -0
package/src/auth/session.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const log = require(
|
|
2
|
-
const CONST = require(
|
|
3
|
-
const ROLES = require(
|
|
1
|
+
const log = require("not-log")(module, "Auth");
|
|
2
|
+
const CONST = require("./const");
|
|
3
|
+
const ROLES = require("./roles");
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Checks if user is authenticated, by searching req.session.user
|
|
@@ -9,12 +9,12 @@ const ROLES = require('./roles');
|
|
|
9
9
|
**/
|
|
10
10
|
|
|
11
11
|
function isUser(req) {
|
|
12
|
-
|
|
12
|
+
return req && req.session && req.session.user ? true : false;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
function ifUser(req) {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
log.error("ifUser is obsolete, use new version as isUser");
|
|
17
|
+
return isUser(req);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -23,7 +23,9 @@ function ifUser(req) {
|
|
|
23
23
|
* @return user role
|
|
24
24
|
**/
|
|
25
25
|
function getRole(req) {
|
|
26
|
-
|
|
26
|
+
return req && req.session && req.session.role
|
|
27
|
+
? req.session.role
|
|
28
|
+
: undefined;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
/**
|
|
@@ -32,15 +34,15 @@ function getRole(req) {
|
|
|
32
34
|
* @param {Array<string>} role array of roles
|
|
33
35
|
**/
|
|
34
36
|
function setRole(req, role) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
if (req && req.session) {
|
|
38
|
+
req.session.role = role;
|
|
39
|
+
}
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
function setId(req, _id) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
log.error("setId is obsolete, use new version as setUserId");
|
|
44
|
+
log.error(req.originalUrl);
|
|
45
|
+
return setUserId(req, _id);
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
/**
|
|
@@ -49,40 +51,39 @@ function setId(req, _id) {
|
|
|
49
51
|
* @param {string} _id user id
|
|
50
52
|
**/
|
|
51
53
|
function setUserId(req, _id) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
if (req && req.session) {
|
|
55
|
+
req.session.user = _id;
|
|
56
|
+
}
|
|
55
57
|
}
|
|
56
58
|
|
|
57
|
-
|
|
58
59
|
/**
|
|
59
60
|
* Returns true if user is admin
|
|
60
61
|
* @param {object} req Express Request object
|
|
61
62
|
* @return {boolean} true - admin, false - not admin
|
|
62
63
|
**/
|
|
63
64
|
function ifAdmin(req) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
log.error("ifAdmin is obsolete, use new version as isRoot");
|
|
66
|
+
log.error(req.originalUrl);
|
|
67
|
+
return isRoot(req);
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
function isRoot(req) {
|
|
70
|
-
|
|
71
|
+
return (
|
|
72
|
+
isUser(req) &&
|
|
73
|
+
ROLES.compareRoles(getRole(req), CONST.DEFAULT_USER_ROLE_FOR_ADMIN)
|
|
74
|
+
);
|
|
71
75
|
}
|
|
72
76
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
77
|
/**
|
|
77
78
|
* Get user id for active session
|
|
78
79
|
* @param {object} req Express Request
|
|
79
80
|
**/
|
|
80
81
|
function getUserId(req) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
if (req && req.session) {
|
|
83
|
+
return req.session.user;
|
|
84
|
+
} else {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
/**
|
|
@@ -90,14 +91,13 @@ function getUserId(req) {
|
|
|
90
91
|
* @param {object} req Express Request
|
|
91
92
|
**/
|
|
92
93
|
function getSessionId(req) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
if (req && req.session && req.session.id) {
|
|
95
|
+
return req.session.id.toString();
|
|
96
|
+
} else {
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
|
|
101
101
|
/**
|
|
102
102
|
* Set auth data in session, user id and role
|
|
103
103
|
* @param {object} req Express Request
|
|
@@ -105,21 +105,20 @@ function getSessionId(req) {
|
|
|
105
105
|
* @param {string} role user role
|
|
106
106
|
**/
|
|
107
107
|
function setAuth(req, id, role) {
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
setUserId(req, id);
|
|
109
|
+
setRole(req, role);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
|
|
113
112
|
/**
|
|
114
113
|
* Set auth data in session to Guest
|
|
115
114
|
* @param {object} req Express Request
|
|
116
115
|
**/
|
|
117
116
|
function setGuest(req) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
117
|
+
if (req && req.session) {
|
|
118
|
+
req.user = null;
|
|
119
|
+
req.session.user = null;
|
|
120
|
+
setRole(req, [CONST.DEFAULT_USER_ROLE_FOR_GUEST]);
|
|
121
|
+
}
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
/**
|
|
@@ -127,27 +126,26 @@ function setGuest(req) {
|
|
|
127
126
|
* @param {object} req Express Request
|
|
128
127
|
**/
|
|
129
128
|
function cleanse(req) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
if (req && req.session) {
|
|
130
|
+
setGuest(req);
|
|
131
|
+
if (req.session.destroy) {
|
|
132
|
+
req.session.destroy();
|
|
133
|
+
}
|
|
134
134
|
}
|
|
135
|
-
}
|
|
136
135
|
}
|
|
137
136
|
|
|
138
|
-
|
|
139
137
|
module.exports = {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
138
|
+
isUser,
|
|
139
|
+
ifUser,
|
|
140
|
+
ifAdmin,
|
|
141
|
+
isRoot,
|
|
142
|
+
getRole,
|
|
143
|
+
setRole,
|
|
144
|
+
setId,
|
|
145
|
+
getUserId,
|
|
146
|
+
setUserId,
|
|
147
|
+
getSessionId,
|
|
148
|
+
setAuth,
|
|
149
|
+
setGuest,
|
|
150
|
+
cleanse,
|
|
153
151
|
};
|
package/src/bootstrap/form.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
const { getIP } = require("../auth"),
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
configInit = require("not-config"),
|
|
3
|
+
{ sayForModule } = require("not-locale"),
|
|
4
|
+
LogInit = require("not-log");
|
|
5
5
|
|
|
6
6
|
module.exports = ({ target, MODULE_NAME, MODEL_NAME, ACTION_NAME }) => {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const Log = LogInit(target, `${MODEL_NAME}/Forms'`);
|
|
8
|
+
const say = sayForModule(MODULE_NAME);
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
const config = configInit.readerForModule(MODULE_NAME);
|
|
11
|
+
return {
|
|
12
|
+
getIP,
|
|
13
|
+
FORM_NAME: `${MODULE_NAME}:${ACTION_NAME}Form`,
|
|
14
|
+
Log,
|
|
15
|
+
say,
|
|
16
|
+
config,
|
|
17
|
+
};
|
|
18
18
|
};
|
package/src/bootstrap/logic.js
CHANGED
|
@@ -1,46 +1,50 @@
|
|
|
1
1
|
const getApp = require("../getApp.js"),
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
configInit = require("not-config"),
|
|
3
|
+
{ sayForModule, modulePhrase } = require("not-locale"),
|
|
4
|
+
LogInit = require("not-log");
|
|
5
5
|
|
|
6
|
+
module.exports = ({
|
|
7
|
+
target,
|
|
8
|
+
MODULE_NAME,
|
|
9
|
+
MODEL_NAME,
|
|
10
|
+
USER_MODEL_NAME = "not-user//User",
|
|
11
|
+
}) => {
|
|
12
|
+
const Log = LogInit(target, `${MODULE_NAME}/Logic/${MODEL_NAME}`);
|
|
13
|
+
const say = sayForModule(MODULE_NAME);
|
|
14
|
+
const phrase = modulePhrase(MODULE_NAME);
|
|
15
|
+
const config = configInit.readerForModule(MODULE_NAME);
|
|
6
16
|
|
|
7
|
-
|
|
17
|
+
const LogAction = ({ action, by, role, ip, root }, params = {}) => {
|
|
18
|
+
Log.log({
|
|
19
|
+
time: new Date(),
|
|
20
|
+
module: MODULE_NAME,
|
|
21
|
+
logic: MODEL_NAME,
|
|
22
|
+
action,
|
|
23
|
+
root,
|
|
24
|
+
by,
|
|
25
|
+
role,
|
|
26
|
+
ip,
|
|
27
|
+
params,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
8
30
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
Log,
|
|
29
|
-
LogAction,
|
|
30
|
-
say,
|
|
31
|
-
phrase,
|
|
32
|
-
config,
|
|
33
|
-
getModel(){
|
|
34
|
-
return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
35
|
-
},
|
|
36
|
-
getModelSchema(){
|
|
37
|
-
return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
38
|
-
},
|
|
39
|
-
getLogic(){
|
|
40
|
-
return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
41
|
-
},
|
|
42
|
-
getModelUser(){
|
|
43
|
-
return getApp().getModel(USER_MODEL_NAME);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
31
|
+
return {
|
|
32
|
+
Log,
|
|
33
|
+
LogAction,
|
|
34
|
+
say,
|
|
35
|
+
phrase,
|
|
36
|
+
config,
|
|
37
|
+
getModel() {
|
|
38
|
+
return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
39
|
+
},
|
|
40
|
+
getModelSchema() {
|
|
41
|
+
return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
42
|
+
},
|
|
43
|
+
getLogic() {
|
|
44
|
+
return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
45
|
+
},
|
|
46
|
+
getModelUser() {
|
|
47
|
+
return getApp().getModel(USER_MODEL_NAME);
|
|
48
|
+
},
|
|
49
|
+
};
|
|
46
50
|
};
|
package/src/bootstrap/model.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
config
|
|
16
|
-
};
|
|
17
|
-
|
|
1
|
+
const configInit = require("not-config"),
|
|
2
|
+
{ sayForModule } = require("not-locale"),
|
|
3
|
+
LogInit = require("not-log");
|
|
4
|
+
|
|
5
|
+
module.exports = ({ target, MODULE_NAME, MODEL_NAME }) => {
|
|
6
|
+
const Log = LogInit(target, `${MODEL_NAME}/Models'`);
|
|
7
|
+
const say = sayForModule(MODULE_NAME);
|
|
8
|
+
|
|
9
|
+
const config = configInit.readerForModule(MODULE_NAME);
|
|
10
|
+
return {
|
|
11
|
+
Log,
|
|
12
|
+
say,
|
|
13
|
+
config,
|
|
14
|
+
};
|
|
18
15
|
};
|
package/src/bootstrap/route.js
CHANGED
|
@@ -1,60 +1,139 @@
|
|
|
1
1
|
const getApp = require("../getApp.js"),
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
HttpExceptions = require("../exceptions/http"),
|
|
3
|
+
configInit = require("not-config"),
|
|
4
|
+
{ sayForModule } = require("not-locale"),
|
|
5
|
+
{ objHas, isFunc, executeFunctionAsAsync } = require("../common"),
|
|
6
|
+
LogInit = require("not-log");
|
|
6
7
|
|
|
7
|
-
module.exports = ({
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
module.exports = ({
|
|
9
|
+
target,
|
|
10
|
+
MODULE_NAME,
|
|
11
|
+
MODEL_NAME,
|
|
12
|
+
USER_MODEL_NAME = "not-user//User",
|
|
13
|
+
/***
|
|
14
|
+
* function signature
|
|
15
|
+
* (
|
|
16
|
+
* prepared: any, //data output from notForm extractor
|
|
17
|
+
* {
|
|
18
|
+
req, //ExpressRequest
|
|
19
|
+
Log, //dedicated Logger
|
|
20
|
+
say, //precondfigured 'say'
|
|
21
|
+
config, //precondfigured 'config' reader
|
|
22
|
+
MODULE_NAME, //context
|
|
23
|
+
MODEL_NAME, //
|
|
24
|
+
ACTION_NAME, //
|
|
25
|
+
USER_MODEL_NAME, //
|
|
26
|
+
},
|
|
27
|
+
*
|
|
28
|
+
* )=>{
|
|
29
|
+
* //pass if access rights is ok
|
|
30
|
+
* //or throw an exception if rights is no good
|
|
31
|
+
* }
|
|
32
|
+
*/
|
|
33
|
+
accessRulesBuilders = {}, //per action builders, {actionName: (preapared: any, req: ExpressRequest)=>{/** pass or throw an exception **/ */}}
|
|
34
|
+
accessRuleBuilder = false, //universal will be used if no dedicated action builder was found
|
|
35
|
+
defaultAccessRule = false, //if builder is not found, safe by default
|
|
36
|
+
}) => {
|
|
37
|
+
const Log = LogInit(target, `${MODEL_NAME}/Routes'`);
|
|
38
|
+
const say = sayForModule(MODULE_NAME);
|
|
39
|
+
const config = configInit.readerForModule(MODULE_NAME);
|
|
10
40
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
41
|
+
const excuteAccessRules = async (accessRulesBuilder, params) => {
|
|
42
|
+
//in case if one function
|
|
43
|
+
if (isFunc(accessRulesBuilder)) {
|
|
44
|
+
await executeFunctionAsAsync(accessRulesBuilder, params);
|
|
45
|
+
//if this is array of functions
|
|
46
|
+
} else if (Array.isArray(accessRulesBuilder)) {
|
|
47
|
+
const checks = accessRulesBuilder.map((proc) => {
|
|
48
|
+
return executeFunctionAsAsync(proc, params);
|
|
49
|
+
});
|
|
50
|
+
await Promise.all(checks);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* access rights check
|
|
55
|
+
*/
|
|
56
|
+
const checkAccessRules = async (actionName, prepared, req) => {
|
|
57
|
+
const params = [
|
|
58
|
+
prepared,
|
|
59
|
+
{
|
|
60
|
+
req,
|
|
61
|
+
Log,
|
|
62
|
+
say,
|
|
63
|
+
config,
|
|
64
|
+
MODULE_NAME,
|
|
65
|
+
MODEL_NAME,
|
|
66
|
+
ACTION_NAME: actionName,
|
|
67
|
+
USER_MODEL_NAME,
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
if (accessRulesBuilders && objHas(accessRulesBuilders, actionName)) {
|
|
71
|
+
const actionAccessRules = accessRulesBuilders[actionName];
|
|
72
|
+
await excuteAccessRules(actionAccessRules, params);
|
|
73
|
+
}
|
|
74
|
+
if (accessRuleBuilder) {
|
|
75
|
+
await excuteAccessRules(accessRuleBuilder, params);
|
|
76
|
+
}
|
|
77
|
+
if (!defaultAccessRule) {
|
|
78
|
+
throw new HttpExceptions.HttpExceptionForbidden();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
22
81
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
};
|
|
82
|
+
const beforeDecorator = async (req, res, next) => {
|
|
83
|
+
const actionName = req.notRouteData.actionName;
|
|
84
|
+
const trimmedActionName = actionName.replace("_", "");
|
|
85
|
+
const FormValidator = getApp().getForm(
|
|
86
|
+
[MODULE_NAME, trimmedActionName].join("//")
|
|
87
|
+
);
|
|
88
|
+
if (FormValidator) {
|
|
89
|
+
const prepared = await FormValidator.run(req, res, next);
|
|
90
|
+
checkAccessRules(trimmedActionName, prepared);
|
|
91
|
+
return prepared;
|
|
92
|
+
} else {
|
|
93
|
+
return {};
|
|
94
|
+
}
|
|
95
|
+
};
|
|
38
96
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
};
|
|
97
|
+
const afterDecorator = (req, res, next, result) => {
|
|
98
|
+
const name = req.notRouteData.actionName;
|
|
99
|
+
if (res.headersSent) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (result && objHas(result, "__redirect__")) {
|
|
103
|
+
res.status(200).redirect(result.__redirect__);
|
|
104
|
+
} else {
|
|
105
|
+
res.status(200).json({
|
|
106
|
+
status: "ok",
|
|
107
|
+
message: say(
|
|
108
|
+
`action_message_${name}_success`,
|
|
109
|
+
{},
|
|
110
|
+
res.locals.locale
|
|
111
|
+
),
|
|
112
|
+
result,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
59
116
|
|
|
117
|
+
return {
|
|
118
|
+
MODULE_NAME,
|
|
119
|
+
MODEL_NAME,
|
|
120
|
+
before: beforeDecorator,
|
|
121
|
+
after: afterDecorator,
|
|
122
|
+
checkAccessRules,
|
|
123
|
+
Log,
|
|
124
|
+
say,
|
|
125
|
+
config,
|
|
126
|
+
getModel() {
|
|
127
|
+
return getApp().getModel(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
128
|
+
},
|
|
129
|
+
getModelSchema() {
|
|
130
|
+
return getApp().getModelSchema(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
131
|
+
},
|
|
132
|
+
getLogic() {
|
|
133
|
+
return getApp().getLogic(`${MODULE_NAME}//${MODEL_NAME}`);
|
|
134
|
+
},
|
|
135
|
+
getModelUser() {
|
|
136
|
+
return getApp().getModel(USER_MODEL_NAME);
|
|
137
|
+
},
|
|
138
|
+
};
|
|
60
139
|
};
|