@volcanicminds/backend 0.2.14 → 0.2.15
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.
|
@@ -26,7 +26,7 @@ module.exports = (req, reply) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
26
26
|
id: userId || 123,
|
|
27
27
|
name: name,
|
|
28
28
|
email: 'jerry@george.com',
|
|
29
|
-
password: '
|
|
29
|
+
password: 'seinfeld',
|
|
30
30
|
roles: [roles.public]
|
|
31
31
|
};
|
|
32
32
|
log.debug('Inject demo user ' + req.user.id);
|
|
@@ -34,8 +34,8 @@ module.exports = (req, reply) => __awaiter(void 0, void 0, void 0, function* ()
|
|
|
34
34
|
if (((_b = req.routeConfig.requiredRoles) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
35
35
|
const { method, url, requiredRoles } = req.routeConfig;
|
|
36
36
|
const userRoles = ((_d = (_c = req.user) === null || _c === void 0 ? void 0 : _c.roles) === null || _d === void 0 ? void 0 : _d.map(({ code }) => code)) || [];
|
|
37
|
-
const
|
|
38
|
-
if (!
|
|
37
|
+
const resolvedRoles = userRoles.length > 0 ? requiredRoles.filter((r) => userRoles.includes(r.code)) : [];
|
|
38
|
+
if (!resolvedRoles.length) {
|
|
39
39
|
log.w && log.warn(`Not allowed to call ${method.toUpperCase()} ${url}`);
|
|
40
40
|
return reply
|
|
41
41
|
.code(403)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2CAAmD;AAGnD,MAAM,CAAC,OAAO,GAAG,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;;IAEpC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IACrC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAA;IAC7B,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAA;IACrC,GAAG,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,IAAI,EAAE,CAAA;IAC5F,GAAG,CAAC,OAAO,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,OAAK,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,CAAA,CAAC,CAAA;IAG5G,MAAM,IAAI,GAAG,CAAA,MAAA,GAAG,CAAC,OAAO,0CAAE,aAAa,KAAI,EAAE,CAAA;IAC7C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE;QACxC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAGtE,IAAI,MAAM,CAAC,qBAAqB,EAAE;YAChC,GAAG,CAAC,IAAI,GAAG;gBACT,EAAE,EAAE,MAAM,IAAI,GAAG;gBACjB,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,kBAAkB;gBACzB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"onRequest.js","sourceRoot":"","sources":["../../../lib/hooks/onRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,10 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
module.exports = (req, reply) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
-
var _a;
|
|
13
12
|
let extraMessage = '';
|
|
14
|
-
if (log.i) {
|
|
15
|
-
const elapsed = new Date().getTime() -
|
|
13
|
+
if (log.i && req.startedAt) {
|
|
14
|
+
const elapsed = new Date().getTime() - req.startedAt.getTime();
|
|
16
15
|
extraMessage = `(${elapsed}ms)`;
|
|
17
16
|
}
|
|
18
17
|
if (log.t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onResponse.js","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,CAAC,OAAO,GAAG,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"onResponse.js","sourceRoot":"","sources":["../../../lib/hooks/onResponse.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,MAAM,CAAC,OAAO,GAAG,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;IACpC,IAAI,YAAY,GAAW,EAAE,CAAA;IAC7B,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE;QAC1B,MAAM,OAAO,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;QACtE,YAAY,GAAG,IAAI,OAAO,KAAK,CAAA;KAChC;IACD,IAAI,GAAG,CAAC,CAAC,EAAE;QACT,MAAM,OAAO,GAAW,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,CAAA;QACrD,MAAM,SAAS,GAAW,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAClF,YAAY,IAAI,IAAI,OAAO,GAAG,SAAS,SAAS,CAAA;KACjD;IAED,MAAM,OAAO,GAAW,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,IAAI,YAAY,EAAE,CAAA;IACtF,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9G,CAAC,CAAA,CAAA"}
|
package/lib/hooks/onRequest.ts
CHANGED
|
@@ -9,38 +9,39 @@ module.exports = async (req, reply) => {
|
|
|
9
9
|
req.roles = () => ((req.user && req.user.roles) || []).map((role: Role) => role?.code) || []
|
|
10
10
|
req.hasRole = (r: Role) => ((req.user && req.user.roles) || []).some((role: Role) => role?.code === r?.code)
|
|
11
11
|
|
|
12
|
-
// authorization
|
|
12
|
+
// authorization check
|
|
13
13
|
const auth = req.headers?.authorization || ''
|
|
14
14
|
const [prefix, token] = auth.split(' ')
|
|
15
15
|
if (prefix === 'Bearer' && token != null) {
|
|
16
16
|
const { sub: userId, name, iat, exp } = reply.server.jwt.verify(token)
|
|
17
17
|
|
|
18
|
-
// demo
|
|
18
|
+
//TODO: demo
|
|
19
19
|
if (global.npmDebugServerStarted) {
|
|
20
20
|
req.user = {
|
|
21
21
|
id: userId || 123,
|
|
22
22
|
name: name,
|
|
23
23
|
email: 'jerry@george.com',
|
|
24
|
-
password: '
|
|
24
|
+
password: 'seinfeld',
|
|
25
25
|
// roles: [roles.admin, roles.public]
|
|
26
26
|
roles: [roles.public]
|
|
27
|
-
}
|
|
27
|
+
} as AuthenticatedUser
|
|
28
|
+
|
|
28
29
|
log.debug('Inject demo user ' + req.user.id)
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
//TODO: recall plugin UserManagement for find user or error
|
|
33
|
+
|
|
31
34
|
if (req.routeConfig.requiredRoles?.length > 0) {
|
|
32
35
|
const { method, url, requiredRoles } = req.routeConfig
|
|
33
36
|
const userRoles: string[] = req.user?.roles?.map(({ code }) => code) || []
|
|
34
|
-
const
|
|
37
|
+
const resolvedRoles = userRoles.length > 0 ? requiredRoles.filter((r) => userRoles.includes(r.code)) : []
|
|
35
38
|
|
|
36
|
-
if (!
|
|
39
|
+
if (!resolvedRoles.length) {
|
|
37
40
|
log.w && log.warn(`Not allowed to call ${method.toUpperCase()} ${url}`)
|
|
38
41
|
return reply
|
|
39
42
|
.code(403)
|
|
40
43
|
.send({ statusCode: 403, code: 'ROLE_NOT_ALLOWED', message: 'Not allowed to call this route' })
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
|
-
|
|
44
|
-
// recall UserManager find / enrichment
|
|
45
46
|
}
|
|
46
47
|
}
|
package/lib/hooks/onResponse.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module.exports = async (req, reply) => {
|
|
2
2
|
let extraMessage: string = ''
|
|
3
|
-
if (log.i) {
|
|
4
|
-
const elapsed: number = new Date().getTime() -
|
|
3
|
+
if (log.i && req.startedAt) {
|
|
4
|
+
const elapsed: number = new Date().getTime() - req.startedAt.getTime()
|
|
5
5
|
extraMessage = `(${elapsed}ms)`
|
|
6
6
|
}
|
|
7
7
|
if (log.t) {
|