not-node 6.3.60 → 6.3.62
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/package.json +1 -1
- package/src/form/after_extract_transformers/addOwnerFieldToFilterIfNotRootOrAdmin.js +17 -0
- package/src/form/after_extract_transformers/addOwnerFieldsToDataIfNotRootOrAdmin.js +16 -0
- package/src/form/after_extract_transformers/index.js +4 -0
- package/src/form/form.js +19 -0
- package/src/generic/form.getByID.js +1 -1
- package/src/generic/form.getById.js +1 -1
- package/src/generic/form.list.js +1 -1
- package/src/generic/form.listAndCount.js +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const notFilter = require("not-filter");
|
|
2
|
+
const notError = require("not-error/src/error.node.cjs");
|
|
3
|
+
|
|
4
|
+
module.exports = (prepared /*, req*/) => {
|
|
5
|
+
if (!prepared?.identity?.root && !prepared?.identity?.admin) {
|
|
6
|
+
if (prepared.identity?.uid) {
|
|
7
|
+
prepared.filter = notFilter.filter.modifyRules(prepared.filter, {
|
|
8
|
+
owner: prepared.identity.uid,
|
|
9
|
+
});
|
|
10
|
+
} else {
|
|
11
|
+
throw new notError("User identity has no uid in it", {
|
|
12
|
+
sid: prepared.identity?.sid,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return prepared;
|
|
17
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const USER_MODEL_NAME = "User";
|
|
2
|
+
const notError = require("not-error/src/error.node.cjs");
|
|
3
|
+
|
|
4
|
+
module.exports = (prepared /*, req*/) => {
|
|
5
|
+
if (!prepared?.identity?.root && !prepared?.identity?.admin) {
|
|
6
|
+
if (prepared.identity?.uid) {
|
|
7
|
+
prepared.data.owner = prepared.identity?.uid;
|
|
8
|
+
prepared.data.ownerModel = USER_MODEL_NAME;
|
|
9
|
+
} else {
|
|
10
|
+
throw new notError("User identity has no uid in it", {
|
|
11
|
+
sid: prepared.identity?.sid,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return prepared;
|
|
16
|
+
};
|
package/src/form/form.js
CHANGED
|
@@ -30,6 +30,7 @@ const {
|
|
|
30
30
|
const DEFAULT_EXTRACTORS = require("./extractors");
|
|
31
31
|
const DEFAULT_ID_EXTRACTORS = require("./env_extractors");
|
|
32
32
|
const DEFAULT_TRANSFORMERS = require("./transformers");
|
|
33
|
+
const DEFAULT_AFTER_EXTRACT_TRANSFORMERS = [];
|
|
33
34
|
const notAppIdentity = require("../identity/index.js");
|
|
34
35
|
|
|
35
36
|
/**
|
|
@@ -67,6 +68,10 @@ class Form {
|
|
|
67
68
|
...DEFAULT_TRANSFORMERS,
|
|
68
69
|
};
|
|
69
70
|
|
|
71
|
+
#AFTER_EXTRACT_TRANSFORMERS = {
|
|
72
|
+
...DEFAULT_AFTER_EXTRACT_TRANSFORMERS,
|
|
73
|
+
};
|
|
74
|
+
|
|
70
75
|
#rateLimiter = null;
|
|
71
76
|
#rateLimiterIdGetter = (data) => data.identity.sid;
|
|
72
77
|
#rateLimiterException = FormExceptionTooManyRequests;
|
|
@@ -82,6 +87,7 @@ class Form {
|
|
|
82
87
|
* @param {import('../app.js')} options.app
|
|
83
88
|
* @param {Object.<string, Function>} options.EXTRACTORS
|
|
84
89
|
* @param {Object.<string, Function>} options.TRANSFORMERS
|
|
90
|
+
* @param {Array<Function>} options.AFTER_EXTRACT_TRANSFORMERS
|
|
85
91
|
* @param {Object.<string, import('../types.js').notAppFormEnvExtractor>} options.ENV_EXTRACTORS
|
|
86
92
|
* @param {import('../types.js').notAppFormRateLimiterOptions} options.rate
|
|
87
93
|
*/
|
|
@@ -94,6 +100,7 @@ class Form {
|
|
|
94
100
|
EXTRACTORS = {},
|
|
95
101
|
ENV_EXTRACTORS = {},
|
|
96
102
|
TRANSFORMERS = {},
|
|
103
|
+
AFTER_EXTRACT_TRANSFORMERS = [],
|
|
97
104
|
rate,
|
|
98
105
|
}) {
|
|
99
106
|
this.#FORM_NAME = FORM_NAME;
|
|
@@ -105,6 +112,7 @@ class Form {
|
|
|
105
112
|
this.#addExtractors(EXTRACTORS);
|
|
106
113
|
this.#addEnvExtractors(ENV_EXTRACTORS);
|
|
107
114
|
this.#addTransformers(TRANSFORMERS);
|
|
115
|
+
this.#addAfterExtractTransformers(AFTER_EXTRACT_TRANSFORMERS);
|
|
108
116
|
this.#createRateLimiter(rate);
|
|
109
117
|
}
|
|
110
118
|
|
|
@@ -224,6 +232,11 @@ class Form {
|
|
|
224
232
|
*/
|
|
225
233
|
//eslint-disable-next-line no-unused-vars
|
|
226
234
|
async afterExtract(value, req) {
|
|
235
|
+
if (this.#AFTER_EXTRACT_TRANSFORMERS) {
|
|
236
|
+
this.#AFTER_EXTRACT_TRANSFORMERS.forEach((aeTransformer) => {
|
|
237
|
+
aeTransformer(value, req);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
227
240
|
return value;
|
|
228
241
|
}
|
|
229
242
|
|
|
@@ -684,6 +697,12 @@ class Form {
|
|
|
684
697
|
}
|
|
685
698
|
}
|
|
686
699
|
|
|
700
|
+
#addAfterExtractTransformers(transformers = []) {
|
|
701
|
+
if (transformers && Array.isArray(transformers)) {
|
|
702
|
+
this.#AFTER_EXTRACT_TRANSFORMERS = [...transformers];
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
|
|
687
706
|
#createRateLimiter(rate) {
|
|
688
707
|
if (rate && rate.options && typeof rate.options == "object") {
|
|
689
708
|
if (typeof rate.idGetter === "function") {
|
|
@@ -4,7 +4,7 @@ const Form = require("../form/form");
|
|
|
4
4
|
//form
|
|
5
5
|
const FIELDS = [
|
|
6
6
|
["targetID", { required: true }, "not-node//ID"],
|
|
7
|
-
["identity", "not-node//
|
|
7
|
+
["identity", "not-node//identity"],
|
|
8
8
|
];
|
|
9
9
|
|
|
10
10
|
module.exports = ({ MODULE_NAME, MODEL_NAME, actionName = "getByID" }) => {
|
|
@@ -4,7 +4,7 @@ const Form = require("../form/form");
|
|
|
4
4
|
//form
|
|
5
5
|
const FIELDS = [
|
|
6
6
|
["targetId", { required: true }, "not-node//objectId"],
|
|
7
|
-
["identity", "not-node//
|
|
7
|
+
["identity", "not-node//identity"],
|
|
8
8
|
];
|
|
9
9
|
|
|
10
10
|
module.exports = ({ MODULE_NAME, MODEL_NAME, actionName = "getById" }) => {
|
package/src/generic/form.list.js
CHANGED