soajs.controller 4.2.39 → 4.2.40
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.
|
@@ -15,12 +15,12 @@ const coreLibs = require("soajs.core.libs");
|
|
|
15
15
|
* @param {Object} originalAclObj
|
|
16
16
|
*/
|
|
17
17
|
module.exports = (originalAclObj) => {
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
let aclObj = null;
|
|
20
20
|
if (originalAclObj) {
|
|
21
21
|
aclObj = coreLibs.utils.cloneObj(originalAclObj);
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
/**
|
|
25
25
|
* changes all tokens found in url with a regular expression
|
|
26
26
|
* @param {String} route
|
|
@@ -28,14 +28,18 @@ module.exports = (originalAclObj) => {
|
|
|
28
28
|
*/
|
|
29
29
|
function constructRegExp(route) {
|
|
30
30
|
const { pathToRegexp } = require("path-to-regexp");
|
|
31
|
-
let keys = [];
|
|
32
|
-
let out = pathToRegexp(route, keys, {sensitive: true});
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
// let keys = [];
|
|
32
|
+
// let out = pathToRegexp(route, keys, {sensitive: true});
|
|
33
|
+
let out = pathToRegexp(route, { sensitive: true });
|
|
34
|
+
if (out.regexp) {
|
|
35
|
+
return out.regexp;
|
|
35
36
|
}
|
|
37
|
+
// if (out && out.keys && out.keys.length > 0) {
|
|
38
|
+
// out = new RegExp(out.toString());
|
|
39
|
+
// }
|
|
36
40
|
return out;
|
|
37
41
|
}
|
|
38
|
-
|
|
42
|
+
|
|
39
43
|
/**
|
|
40
44
|
* check if the given route contains the path param attribute "/:"
|
|
41
45
|
* @param {String} route
|
|
@@ -44,7 +48,7 @@ module.exports = (originalAclObj) => {
|
|
|
44
48
|
function isAttributeRoute(route) {
|
|
45
49
|
return route.includes("/:");
|
|
46
50
|
}
|
|
47
|
-
|
|
51
|
+
|
|
48
52
|
/**
|
|
49
53
|
* recursively loop in acl object,
|
|
50
54
|
* fetch each entry and its sub entries
|
|
@@ -55,9 +59,9 @@ module.exports = (originalAclObj) => {
|
|
|
55
59
|
* @param {string} currentSub
|
|
56
60
|
*/
|
|
57
61
|
function fetchSubObjectsAndReplace(ancestor, object, currentSub) {
|
|
58
|
-
|
|
62
|
+
|
|
59
63
|
let current = (currentSub) ? object[currentSub] : object;
|
|
60
|
-
|
|
64
|
+
|
|
61
65
|
/**
|
|
62
66
|
* if current entry is an object and object has properties and property neither the first nor the last child in object
|
|
63
67
|
* recursively loop on this child
|
|
@@ -66,7 +70,7 @@ module.exports = (originalAclObj) => {
|
|
|
66
70
|
if (currentSub && siblings.indexOf(currentSub) !== (siblings.length - 1)) {
|
|
67
71
|
fetchSubObjectsAndReplace(ancestor, object, siblings[siblings.indexOf(currentSub) + 1]);
|
|
68
72
|
}
|
|
69
|
-
|
|
73
|
+
|
|
70
74
|
/**
|
|
71
75
|
* if current entry is an object and object has properties
|
|
72
76
|
* recursively loop on first child in object
|
|
@@ -77,32 +81,32 @@ module.exports = (originalAclObj) => {
|
|
|
77
81
|
fetchSubObjectsAndReplace(object, current, subObjects[0]);
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
|
-
|
|
84
|
+
|
|
81
85
|
/**
|
|
82
86
|
* if the the route has an attribute
|
|
83
87
|
* copy all the info of apis[route]
|
|
84
88
|
* create a new entry from copied information and push it to apisRegExp
|
|
85
89
|
*/
|
|
86
90
|
if (currentSub && isAttributeRoute(currentSub)) {
|
|
87
|
-
|
|
91
|
+
|
|
88
92
|
let oldCurrentSub = currentSub;
|
|
89
|
-
|
|
93
|
+
|
|
90
94
|
if (!ancestor.apisRegExp) {
|
|
91
95
|
ancestor.apisRegExp = [];
|
|
92
96
|
}
|
|
93
|
-
|
|
97
|
+
|
|
94
98
|
let regExp = constructRegExp(currentSub);
|
|
95
99
|
let obj = object[oldCurrentSub];
|
|
96
100
|
obj.regExp = regExp;
|
|
97
101
|
ancestor.apisRegExp.push(obj);
|
|
98
|
-
|
|
102
|
+
|
|
99
103
|
delete object[oldCurrentSub];
|
|
100
104
|
}
|
|
101
105
|
}
|
|
102
|
-
|
|
106
|
+
|
|
103
107
|
if (aclObj && typeof aclObj === 'object' && Object.keys(aclObj).length > 0) {
|
|
104
108
|
fetchSubObjectsAndReplace(null, aclObj, null);
|
|
105
109
|
}
|
|
106
|
-
|
|
110
|
+
|
|
107
111
|
return aclObj;
|
|
108
112
|
};
|
package/mw/mt/utils.js
CHANGED
|
@@ -36,11 +36,15 @@ if (process.env.SOAJS_SENSITIVE_ENVS) {
|
|
|
36
36
|
const { pathToRegexp } = require("path-to-regexp");
|
|
37
37
|
|
|
38
38
|
function constructRegExp(route) {
|
|
39
|
-
let keys = [];
|
|
40
|
-
let out = pathToRegexp(route, keys, { sensitive: true });
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
// let keys = [];
|
|
40
|
+
// let out = pathToRegexp(route, keys, { sensitive: true });
|
|
41
|
+
let out = pathToRegexp(route, { sensitive: true });
|
|
42
|
+
if (out.regexp) {
|
|
43
|
+
return out.regexp;
|
|
43
44
|
}
|
|
45
|
+
// if (out && out.keys && out.keys.length > 0) {
|
|
46
|
+
// out = new RegExp(out.toString());
|
|
47
|
+
// }
|
|
44
48
|
return out;
|
|
45
49
|
}
|
|
46
50
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "soajs.controller",
|
|
3
3
|
"description": "soajs multi tenant API gateway",
|
|
4
|
-
"version": "4.2.
|
|
4
|
+
"version": "4.2.40",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "soajs team",
|
|
7
7
|
"email": "team@soajs.org"
|
|
@@ -27,17 +27,17 @@
|
|
|
27
27
|
"merge": "2.1.1",
|
|
28
28
|
"netmask": "2.0.2",
|
|
29
29
|
"oauth2-server": "2.4.1",
|
|
30
|
-
"path-to-regexp": "
|
|
30
|
+
"path-to-regexp": "8.3.0",
|
|
31
31
|
"soajs.core.libs": "1.2.1",
|
|
32
|
-
"soajs.core.modules": "5.2.
|
|
33
|
-
"soajs.urac.driver": "3.2.
|
|
32
|
+
"soajs.core.modules": "5.2.16",
|
|
33
|
+
"soajs.urac.driver": "3.2.13",
|
|
34
34
|
"useragent": "2.3.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@babel/core": "7.
|
|
38
|
-
"@babel/plugin-transform-runtime": "7.
|
|
39
|
-
"@babel/preset-env": "7.
|
|
40
|
-
"@babel/runtime": "7.
|
|
37
|
+
"@babel/core": "7.28.4",
|
|
38
|
+
"@babel/plugin-transform-runtime": "7.28.3",
|
|
39
|
+
"@babel/preset-env": "7.28.3",
|
|
40
|
+
"@babel/runtime": "7.28.4",
|
|
41
41
|
"express": "4.21.1",
|
|
42
42
|
"grunt": "1.6.1",
|
|
43
43
|
"grunt-babel": "8.0.0",
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
"grunt-istanbul": "0.8.0",
|
|
50
50
|
"grunt-jsdoc": "2.4.1",
|
|
51
51
|
"grunt-mocha-test": "0.13.3",
|
|
52
|
-
"mocha": "11.
|
|
53
|
-
"nock": "14.0.
|
|
52
|
+
"mocha": "11.7.2",
|
|
53
|
+
"nock": "14.0.10",
|
|
54
54
|
"request": "2.88.2",
|
|
55
|
-
"sinon": "
|
|
55
|
+
"sinon": "21.0.0"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -26,6 +26,9 @@ describe("Unit test for: lib - apiPathParam2apiRegExp", function () {
|
|
|
26
26
|
},
|
|
27
27
|
"/refreshToken/:token": {
|
|
28
28
|
access: false
|
|
29
|
+
},
|
|
30
|
+
"/refreshToken/:token/user/:userId": {
|
|
31
|
+
access: false
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
}
|
|
@@ -34,6 +37,9 @@ describe("Unit test for: lib - apiPathParam2apiRegExp", function () {
|
|
|
34
37
|
it("Vanilla test", function (done) {
|
|
35
38
|
let response = lib(acl);
|
|
36
39
|
assert.ok(response.oauth.delete.apisRegExp);
|
|
40
|
+
let _path = "/refreshToken/12242rde21sew/user/ed2ed23werd2wfd3"
|
|
41
|
+
let test = _path.match(response.oauth.delete.apisRegExp[0].regExp);
|
|
42
|
+
assert.ok(test);
|
|
37
43
|
done();
|
|
38
44
|
});
|
|
39
45
|
});
|