@nmshd/typescript-rest 3.1.6 → 3.2.1
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/.ci/runChecks.sh +1 -1
- package/.github/workflows/publish.yml +2 -4
- package/.github/workflows/test.yml +2 -2
- package/dist/decorators/services.d.ts +1 -1
- package/dist/decorators/services.js +3 -1
- package/dist/decorators/services.js.map +1 -1
- package/dist/middlewares/routeRequiresAuthorization.d.ts +4 -0
- package/dist/middlewares/routeRequiresAuthorization.js +50 -0
- package/dist/middlewares/routeRequiresAuthorization.js.map +1 -0
- package/dist/server/model/server-types.d.ts +2 -2
- package/dist/server/model/server-types.js.map +1 -1
- package/dist/server/parameter-processor.js +2 -4
- package/dist/server/parameter-processor.js.map +1 -1
- package/dist/server/server-container.d.ts +0 -1
- package/dist/server/server-container.js +15 -37
- package/dist/server/server-container.js.map +1 -1
- package/dist/server/service-invoker.js +98 -121
- package/dist/server/service-invoker.js.map +1 -1
- package/dist/typescript-rest.d.ts +1 -0
- package/dist/typescript-rest.js +1 -0
- package/dist/typescript-rest.js.map +1 -1
- package/package.json +18 -18
- package/src/decorators/services.ts +5 -2
- package/src/middlewares/routeRequiresAuthorization.ts +63 -0
- package/src/server/model/server-types.ts +8 -2
- package/src/server/server-container.ts +17 -30
- package/src/typescript-rest.ts +1 -0
package/.ci/runChecks.sh
CHANGED
|
@@ -8,8 +8,8 @@ jobs:
|
|
|
8
8
|
run-checks:
|
|
9
9
|
runs-on: ubuntu-latest
|
|
10
10
|
steps:
|
|
11
|
-
- uses: actions/checkout@
|
|
12
|
-
- uses: actions/setup-node@
|
|
11
|
+
- uses: actions/checkout@v5
|
|
12
|
+
- uses: actions/setup-node@v6
|
|
13
13
|
with:
|
|
14
14
|
node-version: current
|
|
15
15
|
- run: bash .ci/runChecks.sh
|
|
@@ -28,6 +28,4 @@ jobs:
|
|
|
28
28
|
- run: npm ci
|
|
29
29
|
- run: npm run build
|
|
30
30
|
- run: npx enhanced-publish --if-possible --use-preid-as-tag
|
|
31
|
-
env:
|
|
32
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
33
31
|
needs: ['run-checks']
|
|
@@ -64,7 +64,7 @@ export declare function Path(path: string): (...args: Array<any>) => void;
|
|
|
64
64
|
* GET http://mydomain/people/123 (For all authorized users)
|
|
65
65
|
* ```
|
|
66
66
|
*/
|
|
67
|
-
export declare function Security(roles
|
|
67
|
+
export declare function Security(roles: string | [string, ...Array<string>], name?: string): (...args: Array<any>) => void;
|
|
68
68
|
/**
|
|
69
69
|
* A decorator to tell the [[Server]] that a class or a method
|
|
70
70
|
* should include a pre-processor in its request pipelines.
|
|
@@ -80,7 +80,9 @@ function Path(path) {
|
|
|
80
80
|
* ```
|
|
81
81
|
*/
|
|
82
82
|
function Security(roles, name) {
|
|
83
|
-
roles =
|
|
83
|
+
roles = Array.isArray(roles) ? roles : [roles];
|
|
84
|
+
if (roles.length === 0)
|
|
85
|
+
throw new Error('At least one role must be specified.');
|
|
84
86
|
return new SecurityServiceDecorator('Security')
|
|
85
87
|
.withObjectProperty('authenticator', name || 'default', roles)
|
|
86
88
|
.createDecorator();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/decorators/services.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAsCb,oBAEC;AAmCD,
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/decorators/services.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NextFunction, Request, Response } from 'express';
|
|
2
|
+
export declare function routeRequiresAuthorization(authenticator: {
|
|
3
|
+
getRoles: (req: Request, res: Response) => Array<string>;
|
|
4
|
+
}, ...permittedRoles: [string, ...Array<string>]): (req: Request, res: Response, next: NextFunction) => void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routeRequiresAuthorization = routeRequiresAuthorization;
|
|
4
|
+
const debug = require("debug");
|
|
5
|
+
const Errors = require("../server/model/errors");
|
|
6
|
+
const debuggerInstance = debug('typescript-rest:middlewares:routeRequiresAuthorization');
|
|
7
|
+
function routeRequiresAuthorization(authenticator, ...permittedRoles) {
|
|
8
|
+
if (permittedRoles.length === 0)
|
|
9
|
+
throw new Error('At least one permitted role must be specified.');
|
|
10
|
+
const roleRegex = /^[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){0,}$/;
|
|
11
|
+
const nonMatchingRoles = permittedRoles.filter((role) => !roleRegex.test(role));
|
|
12
|
+
if (nonMatchingRoles.length > 0) {
|
|
13
|
+
throw new Error(`Invalid permitted role(s) specified: ${nonMatchingRoles.join(', ')}. Roles must match the pattern: ${roleRegex}.`);
|
|
14
|
+
}
|
|
15
|
+
return (req, res, next) => {
|
|
16
|
+
const rawUserRoles = authenticator.getRoles(req, res);
|
|
17
|
+
if (debuggerInstance.enabled)
|
|
18
|
+
debuggerInstance('Validating authentication roles: <%j>.', rawUserRoles);
|
|
19
|
+
const userRoles = rawUserRoles.map(Role.from);
|
|
20
|
+
const isAuthorized = permittedRoles.some((r) => isRoleMatched(r, userRoles));
|
|
21
|
+
if (!isAuthorized) {
|
|
22
|
+
next(new Errors.ForbiddenError('You are not allowed to access this endpoint.'));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
next();
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function isRoleMatched(permittedRole, userRoles) {
|
|
29
|
+
return userRoles.some((userRole) => userRole.matches(permittedRole));
|
|
30
|
+
}
|
|
31
|
+
class Role {
|
|
32
|
+
constructor(role) {
|
|
33
|
+
this.roleRegex = this.transformUserRole(role);
|
|
34
|
+
}
|
|
35
|
+
static from(role) {
|
|
36
|
+
return new Role(role);
|
|
37
|
+
}
|
|
38
|
+
transformUserRole(userRole) {
|
|
39
|
+
if (!userRole.includes('*'))
|
|
40
|
+
return new RegExp(`^${userRole}$`);
|
|
41
|
+
const regexString = userRole
|
|
42
|
+
.replaceAll('**', '[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){0,}')
|
|
43
|
+
.replaceAll('*', '[a-zA-Z0-9_-]+');
|
|
44
|
+
return new RegExp(`^${regexString}$`);
|
|
45
|
+
}
|
|
46
|
+
matches(permittedRole) {
|
|
47
|
+
return this.roleRegex.test(permittedRole);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=routeRequiresAuthorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routeRequiresAuthorization.js","sourceRoot":"","sources":["../../src/middlewares/routeRequiresAuthorization.ts"],"names":[],"mappings":";;AAMA,gEA2BC;AAjCD,+BAA+B;AAE/B,iDAAiD;AAEjD,MAAM,gBAAgB,GAAG,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAEzF,SAAgB,0BAA0B,CACtC,aAA2E,EAC3E,GAAG,cAA0C;IAE7C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEnG,MAAM,SAAS,GAAG,uCAAuC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACX,wCAAwC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,SAAS,GAAG,CACrH,CAAC;IACN,CAAC;IAED,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QACvD,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,gBAAgB,CAAC,OAAO;YAAE,gBAAgB,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC;QAEvG,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,8CAA8C,CAAC,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QAED,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,aAAqB,EAAE,SAAsB;IAChE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,IAAI;IAGN,YAAoB,IAAY;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,IAAY;QAC3B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,MAAM,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,QAAQ;aACvB,UAAU,CAAC,IAAI,EAAE,qCAAqC,CAAC;aACvD,UAAU,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACvC,OAAO,IAAI,MAAM,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEM,OAAO,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;CACJ"}
|
|
@@ -100,11 +100,11 @@ export interface ServiceAuthenticator {
|
|
|
100
100
|
/**
|
|
101
101
|
* Initialize the authenticator
|
|
102
102
|
*/
|
|
103
|
-
initialize(router: express.Router)
|
|
103
|
+
initialize?: (router: express.Router) => void;
|
|
104
104
|
/**
|
|
105
105
|
* Retrieve the middleware used to authenticate users.
|
|
106
106
|
*/
|
|
107
|
-
getMiddleware()
|
|
107
|
+
getMiddleware?: () => express.RequestHandler;
|
|
108
108
|
}
|
|
109
109
|
export type ServiceProcessor = (req: express.Request, res?: express.Response) => void | Promise<void>;
|
|
110
110
|
export type ParameterConverter = (paramValue: any) => any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-types.js","sourceRoot":"","sources":["../../../src/server/model/server-types.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAwBb;;GAEG;AACH,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,yBAAW,CAAA;IACX,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,6BAAe,CAAA;AACnB,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED;;GAEG;AACH,MAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"server-types.js","sourceRoot":"","sources":["../../../src/server/model/server-types.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAwBb;;GAEG;AACH,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,yBAAW,CAAA;IACX,2BAAa,CAAA;IACb,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,2BAAa,CAAA;IACb,iCAAmB,CAAA;IACnB,6BAAe,CAAA;AACnB,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED;;GAEG;AACH,MAAa,cAAc;CA0B1B;AA1BD,wCA0BC;AAED;;GAEG;AACH,MAAsB,kBAAkB;IAMpC;;;;OAIG;IACH,YACW,QAAgB,EAChB,UAAkB;QADlB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;IAC1B,CAAC;CACP;AAfD,gDAeC;AA0CD;;GAEG;AACH,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,yBAAW,CAAA;AACf,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB"}
|
|
@@ -43,15 +43,13 @@ class ParameterProcessor {
|
|
|
43
43
|
return null;
|
|
44
44
|
});
|
|
45
45
|
parameterMapper.set(metadata_1.ParamType.files, (context, property) => {
|
|
46
|
-
var _a;
|
|
47
46
|
this.debugger.runtime('Processing files parameter');
|
|
48
47
|
// @ts-expect-error will be an array
|
|
49
|
-
return
|
|
48
|
+
return context.request.files?.[property.name];
|
|
50
49
|
});
|
|
51
50
|
parameterMapper.set(metadata_1.ParamType.form, (context, property) => this.convertType(context.request.body[property.name], property.propertyType));
|
|
52
51
|
parameterMapper.set(metadata_1.ParamType.param, (context, property) => {
|
|
53
|
-
|
|
54
|
-
const paramValue = ((_a = context.request.body) !== null && _a !== void 0 ? _a : {})[property.name] || context.request.query[property.name];
|
|
52
|
+
const paramValue = (context.request.body ?? {})[property.name] || context.request.query[property.name];
|
|
55
53
|
return this.convertType(paramValue, property.propertyType);
|
|
56
54
|
});
|
|
57
55
|
parameterMapper.set(metadata_1.ParamType.context, (context) => context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parameter-processor.js","sourceRoot":"","sources":["../../src/server/parameter-processor.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,+BAA+B;AAC/B,wDAA4C;AAC5C,+CAA8D;AAE9D,yDAAqD;AAIrD,MAAa,kBAAkB;IACpB,MAAM,CAAC,GAAG;QACb,OAAO,kBAAkB,CAAC,QAAQ,CAAC;IACvC,CAAC;IAUD;QALQ,aAAQ,GAAG;YACf,KAAK,EAAE,KAAK,CAAC,2CAA2C,CAAC;YACzD,OAAO,EAAE,KAAK,CAAC,6CAA6C,CAAC;SAChE,CAAC;QAGE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC7D,CAAC;IAEM,gBAAgB,CAAC,OAAuB,EAAE,QAAyB;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,IAAI,wBAAM,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAEO,0BAA0B;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,MAAM,eAAe,GAA2C,IAAI,GAAG,EAAE,CAAC;QAE1E,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACtD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CACjF,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACvD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAC1F,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACxD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CACjF,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACxD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAClF,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CACtD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAChE,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;YACnD,MAAM,KAAK,GAA+B,OAAO,CAAC,OAAO,CAAC,KAAK;gBAC3D,CAAC,CAAC,oCAAoC;oBACpC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,GAAG,CAAC,oBAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"parameter-processor.js","sourceRoot":"","sources":["../../src/server/parameter-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,6 @@ export declare class ServerContainer {
|
|
|
43
43
|
private buildServiceMiddleware;
|
|
44
44
|
private buildSecurityMiddlewares;
|
|
45
45
|
private getAuthenticator;
|
|
46
|
-
private buildAuthMiddleware;
|
|
47
46
|
private buildParserMiddlewares;
|
|
48
47
|
private buildBodyParserMiddleware;
|
|
49
48
|
private buildFilesParserMiddleware;
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
/* eslint-disable prefer-spread */
|
|
2
2
|
'use strict';
|
|
3
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
4
|
exports.ServerContainer = exports.DefaultServiceFactory = void 0;
|
|
14
5
|
const bodyParser = require("body-parser");
|
|
@@ -16,6 +7,7 @@ const cookieParser = require("cookie-parser");
|
|
|
16
7
|
const debug = require("debug");
|
|
17
8
|
const _ = require("lodash");
|
|
18
9
|
const multer = require("multer");
|
|
10
|
+
const routeRequiresAuthorization_1 = require("../middlewares/routeRequiresAuthorization");
|
|
19
11
|
const Errors = require("./model/errors");
|
|
20
12
|
const metadata_1 = require("./model/metadata");
|
|
21
13
|
const server_types_1 = require("./model/server-types");
|
|
@@ -39,8 +31,7 @@ class ServerContainer {
|
|
|
39
31
|
this.serviceFactory = new DefaultServiceFactory();
|
|
40
32
|
this.paramConverters = new Map();
|
|
41
33
|
this.debugger = {
|
|
42
|
-
build: debug('typescript-rest:server-container:build')
|
|
43
|
-
runtime: debug('typescript-rest:server-container:runtime')
|
|
34
|
+
build: debug('typescript-rest:server-container:build')
|
|
44
35
|
};
|
|
45
36
|
this.serverClasses = new Map();
|
|
46
37
|
this.paths = new Map();
|
|
@@ -92,7 +83,8 @@ class ServerContainer {
|
|
|
92
83
|
if (this.authenticator) {
|
|
93
84
|
this.authenticator.forEach((auth, name) => {
|
|
94
85
|
this.debugger.build('Initializing authenticator: %s', name);
|
|
95
|
-
auth.initialize
|
|
86
|
+
if (auth.initialize)
|
|
87
|
+
auth.initialize(this.router);
|
|
96
88
|
});
|
|
97
89
|
}
|
|
98
90
|
this.serverClasses.forEach((classData) => {
|
|
@@ -280,13 +272,13 @@ class ServerContainer {
|
|
|
280
272
|
buildServiceMiddleware(serviceMethod, serviceClass) {
|
|
281
273
|
const serviceInvoker = new service_invoker_1.ServiceInvoker(serviceClass, serviceMethod);
|
|
282
274
|
this.debugger.build('Creating the service middleware for method <%s>.', serviceMethod.name);
|
|
283
|
-
return (req, res, next) =>
|
|
275
|
+
return async (req, res, next) => {
|
|
284
276
|
const context = new server_types_1.ServiceContext();
|
|
285
277
|
context.request = req;
|
|
286
278
|
context.response = res;
|
|
287
279
|
context.next = next;
|
|
288
|
-
|
|
289
|
-
}
|
|
280
|
+
await serviceInvoker.callService(context);
|
|
281
|
+
};
|
|
290
282
|
}
|
|
291
283
|
buildSecurityMiddlewares(serviceClass, serviceMethod) {
|
|
292
284
|
const result = new Array();
|
|
@@ -294,16 +286,16 @@ class ServerContainer {
|
|
|
294
286
|
if (this.authenticator && authenticatorMap) {
|
|
295
287
|
const authenticatorNames = Object.keys(authenticatorMap);
|
|
296
288
|
for (const authenticatorName of authenticatorNames) {
|
|
297
|
-
|
|
289
|
+
const roles = authenticatorMap[authenticatorName];
|
|
290
|
+
if (roles.length === 0)
|
|
291
|
+
continue;
|
|
298
292
|
this.debugger.build('Registering an authenticator middleware <%s> for method <%s>.', authenticatorName, serviceMethod.name);
|
|
299
293
|
const authenticator = this.getAuthenticator(authenticatorName);
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
result.push(this.buildAuthMiddleware(authenticator, roles));
|
|
306
|
-
}
|
|
294
|
+
if (authenticator.getMiddleware)
|
|
295
|
+
result.push(authenticator.getMiddleware());
|
|
296
|
+
this.debugger.build('Registering a role validator middleware <%s> for method <%s>.', authenticatorName, serviceMethod.name);
|
|
297
|
+
this.debugger.build('Roles: <%j>.', roles);
|
|
298
|
+
result.push((0, routeRequiresAuthorization_1.routeRequiresAuthorization)(authenticator, roles[0], ...roles.slice(1)));
|
|
307
299
|
}
|
|
308
300
|
}
|
|
309
301
|
return result;
|
|
@@ -314,20 +306,6 @@ class ServerContainer {
|
|
|
314
306
|
}
|
|
315
307
|
return this.authenticator.get(authenticatorName);
|
|
316
308
|
}
|
|
317
|
-
buildAuthMiddleware(authenticator, roles) {
|
|
318
|
-
return (req, res, next) => {
|
|
319
|
-
const requestRoles = authenticator.getRoles(req, res);
|
|
320
|
-
if (this.debugger.runtime.enabled) {
|
|
321
|
-
this.debugger.runtime('Validating authentication roles: <%j>.', requestRoles);
|
|
322
|
-
}
|
|
323
|
-
if (requestRoles.some((role) => roles.indexOf(role) >= 0)) {
|
|
324
|
-
next();
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
throw new Errors.ForbiddenError();
|
|
328
|
-
}
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
309
|
buildParserMiddlewares(serviceClass, serviceMethod) {
|
|
332
310
|
const result = new Array();
|
|
333
311
|
const bodyParserOptions = serviceMethod.bodyParserOptions || serviceClass.bodyParserOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-container.js","sourceRoot":"","sources":["../../src/server/server-container.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server-container.js","sourceRoot":"","sources":["../../src/server/server-container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.ServiceInvoker = void 0;
|
|
13
4
|
const debug = require("debug");
|
|
@@ -25,65 +16,57 @@ class ServiceInvoker {
|
|
|
25
16
|
this.preProcessors = _.union(serviceMethod.preProcessors, serviceClass.preProcessors);
|
|
26
17
|
this.postProcessors = _.union(serviceMethod.postProcessors, serviceClass.postProcessors);
|
|
27
18
|
}
|
|
28
|
-
callService(context) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
context.next();
|
|
34
|
-
}
|
|
35
|
-
else if (this.debugger.enabled) {
|
|
36
|
-
this.debugger('Ignoring next middlewares');
|
|
37
|
-
}
|
|
19
|
+
async callService(context) {
|
|
20
|
+
try {
|
|
21
|
+
await this.callTargetEndPoint(context);
|
|
22
|
+
if (this.mustCallNext()) {
|
|
23
|
+
context.next();
|
|
38
24
|
}
|
|
39
|
-
|
|
40
|
-
|
|
25
|
+
else if (this.debugger.enabled) {
|
|
26
|
+
this.debugger('Ignoring next middlewares');
|
|
41
27
|
}
|
|
42
|
-
}
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
context.next(err);
|
|
31
|
+
}
|
|
43
32
|
}
|
|
44
33
|
mustCallNext() {
|
|
45
34
|
return (!server_container_1.ServerContainer.get().ignoreNextMiddlewares &&
|
|
46
35
|
!this.serviceMethod.ignoreNextMiddlewares &&
|
|
47
36
|
!this.serviceClass.ignoreNextMiddlewares);
|
|
48
37
|
}
|
|
49
|
-
runPreProcessors(context) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
});
|
|
38
|
+
async runPreProcessors(context) {
|
|
39
|
+
this.debugger('Running preprocessors');
|
|
40
|
+
for (const processor of this.preProcessors) {
|
|
41
|
+
await Promise.resolve(processor(context.request, context.response));
|
|
42
|
+
}
|
|
56
43
|
}
|
|
57
|
-
runPostProcessors(context) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
});
|
|
44
|
+
async runPostProcessors(context) {
|
|
45
|
+
this.debugger('Running postprocessors');
|
|
46
|
+
for (const processor of this.postProcessors) {
|
|
47
|
+
await Promise.resolve(processor(context.request, context.response));
|
|
48
|
+
}
|
|
64
49
|
}
|
|
65
|
-
callTargetEndPoint(context) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
yield this.sendValue(result, context);
|
|
86
|
-
});
|
|
50
|
+
async callTargetEndPoint(context) {
|
|
51
|
+
this.debugger('Calling targetEndpoint %s', this.serviceMethod.resolvedPath);
|
|
52
|
+
this.checkAcceptance(context);
|
|
53
|
+
if (this.preProcessors.length) {
|
|
54
|
+
await this.runPreProcessors(context);
|
|
55
|
+
}
|
|
56
|
+
const serviceObject = this.createService(context);
|
|
57
|
+
const args = this.buildArgumentsList(context);
|
|
58
|
+
const toCall = this.getMethodToCall();
|
|
59
|
+
if (this.debugger.enabled) {
|
|
60
|
+
this.debugger('Invoking service method <%s> with params: %j', this.serviceMethod.name, args);
|
|
61
|
+
}
|
|
62
|
+
const result = await toCall.apply(serviceObject, args);
|
|
63
|
+
if (this.postProcessors.length) {
|
|
64
|
+
await this.runPostProcessors(context);
|
|
65
|
+
}
|
|
66
|
+
if (!context.response.headersSent) {
|
|
67
|
+
this.processResponseHeaders(context);
|
|
68
|
+
}
|
|
69
|
+
await this.sendValue(result, context);
|
|
87
70
|
}
|
|
88
71
|
getMethodToCall() {
|
|
89
72
|
return (this.serviceClass.targetClass.prototype[this.serviceMethod.name] ||
|
|
@@ -169,73 +152,67 @@ class ServiceInvoker {
|
|
|
169
152
|
}
|
|
170
153
|
}
|
|
171
154
|
}
|
|
172
|
-
sendValue(value, context) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
155
|
+
async sendValue(value, context) {
|
|
156
|
+
if (value !== return_types_1.NoResponse) {
|
|
157
|
+
this.debugger('Sending response value: %o', value);
|
|
158
|
+
switch (typeof value) {
|
|
159
|
+
case 'number':
|
|
160
|
+
context.response.send(value.toString());
|
|
161
|
+
break;
|
|
162
|
+
case 'string':
|
|
163
|
+
context.response.send(value);
|
|
164
|
+
break;
|
|
165
|
+
case 'boolean':
|
|
166
|
+
context.response.send(value.toString());
|
|
167
|
+
break;
|
|
168
|
+
case 'undefined':
|
|
169
|
+
if (!context.response.headersSent) {
|
|
170
|
+
context.response.sendStatus(204);
|
|
171
|
+
}
|
|
172
|
+
break;
|
|
173
|
+
default:
|
|
174
|
+
if (value === null) {
|
|
181
175
|
context.response.send(value);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
case 'undefined':
|
|
187
|
-
if (!context.response.headersSent) {
|
|
188
|
-
context.response.sendStatus(204);
|
|
189
|
-
}
|
|
190
|
-
break;
|
|
191
|
-
default:
|
|
192
|
-
if (value === null) {
|
|
193
|
-
context.response.send(value);
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
yield this.sendComplexValue(context, value);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
this.debugger('Do not send any response value');
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
await this.sendComplexValue(context, value);
|
|
179
|
+
}
|
|
202
180
|
}
|
|
203
|
-
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
this.debugger('Do not send any response value');
|
|
184
|
+
}
|
|
204
185
|
}
|
|
205
|
-
sendComplexValue(context, value) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
}
|
|
224
|
-
});
|
|
186
|
+
async sendComplexValue(context, value) {
|
|
187
|
+
if (value.filePath && value instanceof return_types_1.DownloadResource) {
|
|
188
|
+
await this.downloadResToPromise(context.response, value);
|
|
189
|
+
}
|
|
190
|
+
else if (value instanceof return_types_1.DownloadBinaryData) {
|
|
191
|
+
this.sendFile(context, value);
|
|
192
|
+
}
|
|
193
|
+
else if (value.location && value instanceof server_types_1.ReferencedResource) {
|
|
194
|
+
await this.sendReferencedResource(context, value);
|
|
195
|
+
}
|
|
196
|
+
else if (value.then && value.catch) {
|
|
197
|
+
const val = await value;
|
|
198
|
+
await this.sendValue(val, context);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
this.debugger('Sending a json value: %j', value);
|
|
202
|
+
context.response.json(value);
|
|
203
|
+
}
|
|
225
204
|
}
|
|
226
|
-
sendReferencedResource(context, value) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
});
|
|
205
|
+
async sendReferencedResource(context, value) {
|
|
206
|
+
this.debugger('Setting the header Location: %s', value.location);
|
|
207
|
+
this.debugger('Sendinf status code: %d', value.statusCode);
|
|
208
|
+
context.response.set('Location', value.location);
|
|
209
|
+
if (value.body) {
|
|
210
|
+
context.response.status(value.statusCode);
|
|
211
|
+
await this.sendValue(value.body, context);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
context.response.sendStatus(value.statusCode);
|
|
215
|
+
}
|
|
239
216
|
}
|
|
240
217
|
sendFile(context, value) {
|
|
241
218
|
this.debugger('Sending file as response');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-invoker.js","sourceRoot":"","sources":["../../src/server/service-invoker.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"service-invoker.js","sourceRoot":"","sources":["../../src/server/service-invoker.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import * as Return from './server/model/return-types';
|
|
|
3
3
|
export * from './decorators/methods';
|
|
4
4
|
export * from './decorators/parameters';
|
|
5
5
|
export * from './decorators/services';
|
|
6
|
+
export * from './middlewares/routeRequiresAuthorization';
|
|
6
7
|
export * from './server/model/server-types';
|
|
7
8
|
export * from './server/server';
|
|
8
9
|
export { DefaultServiceFactory } from './server/server-container';
|
package/dist/typescript-rest.js
CHANGED
|
@@ -23,6 +23,7 @@ exports.Return = Return;
|
|
|
23
23
|
__exportStar(require("./decorators/methods"), exports);
|
|
24
24
|
__exportStar(require("./decorators/parameters"), exports);
|
|
25
25
|
__exportStar(require("./decorators/services"), exports);
|
|
26
|
+
__exportStar(require("./middlewares/routeRequiresAuthorization"), exports);
|
|
26
27
|
__exportStar(require("./server/model/server-types"), exports);
|
|
27
28
|
__exportStar(require("./server/server"), exports);
|
|
28
29
|
var server_container_1 = require("./server/server-container");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript-rest.js","sourceRoot":"","sources":["../src/typescript-rest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;AAEb,4CAA+C;AAC/C,gDAAgD;
|
|
1
|
+
{"version":3,"file":"typescript-rest.js","sourceRoot":"","sources":["../src/typescript-rest.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;AAEb,4CAA+C;AAC/C,gDAAgD;AAWvC,wBAAM;AAVf,sDAAsD;AAUrC,wBAAM;AARvB,uDAAqC;AACrC,0DAAwC;AACxC,wDAAsC;AACtC,2EAAyD;AACzD,8DAA4C;AAC5C,kDAAgC;AAEhC,8DAAkE;AAAzD,yHAAA,qBAAqB,OAAA;AAG9B,qBAAY,CAAC,SAAS,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nmshd/typescript-rest",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"description": "A Library to create RESTFul APIs with Typescript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"API",
|
|
@@ -60,44 +60,44 @@
|
|
|
60
60
|
"sourceMap": true
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@types/body-parser": "1.19.
|
|
64
|
-
"@types/cookie-parser": "^1.4.
|
|
65
|
-
"@types/express": "^5.0.
|
|
66
|
-
"@types/multer": "^
|
|
63
|
+
"@types/body-parser": "1.19.6",
|
|
64
|
+
"@types/cookie-parser": "^1.4.9",
|
|
65
|
+
"@types/express": "^5.0.3",
|
|
66
|
+
"@types/multer": "^2.0.0",
|
|
67
67
|
"body-parser": "^2.2.0",
|
|
68
68
|
"cookie-parser": "^1.4.7",
|
|
69
69
|
"express": "^5.1.0",
|
|
70
|
-
"fs-extra": "^11.3.
|
|
70
|
+
"fs-extra": "^11.3.2",
|
|
71
71
|
"lodash": "^4.17.21",
|
|
72
|
-
"multer": "^2.0.
|
|
72
|
+
"multer": "^2.0.2",
|
|
73
73
|
"reflect-metadata": "^0.2.2",
|
|
74
74
|
"require-glob": "^4.1.0",
|
|
75
75
|
"swagger-ui-express": "^5.0.1",
|
|
76
76
|
"yamljs": "^0.3.0"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@js-soft/license-check": "^1.0.
|
|
80
|
-
"@nmshd/typescript-ioc": "^3.2.
|
|
79
|
+
"@js-soft/license-check": "^1.0.10",
|
|
80
|
+
"@nmshd/typescript-ioc": "^3.2.5",
|
|
81
81
|
"@types/debug": "^4.1.12",
|
|
82
82
|
"@types/fs-extra": "^11.0.4",
|
|
83
|
-
"@types/jest": "^
|
|
84
|
-
"@types/lodash": "^4.17.
|
|
85
|
-
"@types/node": "^
|
|
86
|
-
"@types/request": "^2.48.
|
|
83
|
+
"@types/jest": "^30.0.0",
|
|
84
|
+
"@types/lodash": "^4.17.20",
|
|
85
|
+
"@types/node": "^24.7.2",
|
|
86
|
+
"@types/request": "^2.48.13",
|
|
87
87
|
"@types/yamljs": "^0.2.34",
|
|
88
88
|
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
|
89
89
|
"@typescript-eslint/parser": "^6.20.0",
|
|
90
|
-
"cross-env": "^
|
|
90
|
+
"cross-env": "^10.1.0",
|
|
91
91
|
"eslint": "^8.56.0",
|
|
92
92
|
"eslint-config-prettier": "^9.1.0",
|
|
93
93
|
"eslint-plugin-jsdoc": "^48.0.4",
|
|
94
94
|
"eslint-plugin-prefer-arrow": "^1.2.3",
|
|
95
|
-
"jest": "^
|
|
96
|
-
"prettier": "^3.
|
|
95
|
+
"jest": "^30.2.0",
|
|
96
|
+
"prettier": "^3.6.2",
|
|
97
97
|
"request": "^2.88.2",
|
|
98
98
|
"rimraf": "^6.0.1",
|
|
99
|
-
"ts-jest": "^29.
|
|
100
|
-
"typescript": "^5.
|
|
99
|
+
"ts-jest": "^29.4.5",
|
|
100
|
+
"typescript": "^5.9.3"
|
|
101
101
|
},
|
|
102
102
|
"engines": {
|
|
103
103
|
"node": ">=6.0.0"
|
|
@@ -73,8 +73,11 @@ export function Path(path: string) {
|
|
|
73
73
|
* GET http://mydomain/people/123 (For all authorized users)
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
76
|
-
export function Security(roles
|
|
77
|
-
roles =
|
|
76
|
+
export function Security(roles: string | [string, ...Array<string>], name?: string) {
|
|
77
|
+
roles = Array.isArray(roles) ? roles : [roles];
|
|
78
|
+
|
|
79
|
+
if (roles.length === 0) throw new Error('At least one role must be specified.');
|
|
80
|
+
|
|
78
81
|
return new SecurityServiceDecorator('Security')
|
|
79
82
|
.withObjectProperty('authenticator', name || 'default', roles)
|
|
80
83
|
.createDecorator();
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as debug from 'debug';
|
|
2
|
+
import { NextFunction, Request, Response } from 'express';
|
|
3
|
+
import * as Errors from '../server/model/errors';
|
|
4
|
+
|
|
5
|
+
const debuggerInstance = debug('typescript-rest:middlewares:routeRequiresAuthorization');
|
|
6
|
+
|
|
7
|
+
export function routeRequiresAuthorization(
|
|
8
|
+
authenticator: { getRoles: (req: Request, res: Response) => Array<string> },
|
|
9
|
+
...permittedRoles: [string, ...Array<string>]
|
|
10
|
+
) {
|
|
11
|
+
if (permittedRoles.length === 0) throw new Error('At least one permitted role must be specified.');
|
|
12
|
+
|
|
13
|
+
const roleRegex = /^[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){0,}$/;
|
|
14
|
+
const nonMatchingRoles = permittedRoles.filter((role) => !roleRegex.test(role));
|
|
15
|
+
if (nonMatchingRoles.length > 0) {
|
|
16
|
+
throw new Error(
|
|
17
|
+
`Invalid permitted role(s) specified: ${nonMatchingRoles.join(', ')}. Roles must match the pattern: ${roleRegex}.`
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
22
|
+
const rawUserRoles = authenticator.getRoles(req, res);
|
|
23
|
+
if (debuggerInstance.enabled) debuggerInstance('Validating authentication roles: <%j>.', rawUserRoles);
|
|
24
|
+
|
|
25
|
+
const userRoles = rawUserRoles.map(Role.from);
|
|
26
|
+
const isAuthorized = permittedRoles.some((r) => isRoleMatched(r, userRoles));
|
|
27
|
+
if (!isAuthorized) {
|
|
28
|
+
next(new Errors.ForbiddenError('You are not allowed to access this endpoint.'));
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
next();
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function isRoleMatched(permittedRole: string, userRoles: Array<Role>): boolean {
|
|
37
|
+
return userRoles.some((userRole) => userRole.matches(permittedRole));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
class Role {
|
|
41
|
+
private roleRegex: RegExp;
|
|
42
|
+
|
|
43
|
+
private constructor(role: string) {
|
|
44
|
+
this.roleRegex = this.transformUserRole(role);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static from(role: string): Role {
|
|
48
|
+
return new Role(role);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private transformUserRole(userRole: string): RegExp {
|
|
52
|
+
if (!userRole.includes('*')) return new RegExp(`^${userRole}$`);
|
|
53
|
+
|
|
54
|
+
const regexString = userRole
|
|
55
|
+
.replaceAll('**', '[a-zA-Z0-9_-]+(:[a-zA-Z0-9_-]+){0,}')
|
|
56
|
+
.replaceAll('*', '[a-zA-Z0-9_-]+');
|
|
57
|
+
return new RegExp(`^${regexString}$`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public matches(permittedRole: string): unknown {
|
|
61
|
+
return this.roleRegex.test(permittedRole);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -43,18 +43,22 @@ export class ServiceContext {
|
|
|
43
43
|
* The resolved language to be used in the current request handling.
|
|
44
44
|
*/
|
|
45
45
|
public language: string;
|
|
46
|
+
|
|
46
47
|
/**
|
|
47
48
|
* The preferred media type to be used in the current request handling.
|
|
48
49
|
*/
|
|
49
50
|
public accept: string;
|
|
51
|
+
|
|
50
52
|
/**
|
|
51
53
|
* The request object.
|
|
52
54
|
*/
|
|
53
55
|
public request: express.Request;
|
|
56
|
+
|
|
54
57
|
/**
|
|
55
58
|
* The response object
|
|
56
59
|
*/
|
|
57
60
|
public response: express.Response;
|
|
61
|
+
|
|
58
62
|
/**
|
|
59
63
|
* The next function. It can be used to delegate to the next middleware
|
|
60
64
|
* registered the processing of the current request.
|
|
@@ -107,14 +111,16 @@ export interface ServiceAuthenticator {
|
|
|
107
111
|
* Get the user list of roles.
|
|
108
112
|
*/
|
|
109
113
|
getRoles: (req: express.Request, res: express.Response) => Array<string>;
|
|
114
|
+
|
|
110
115
|
/**
|
|
111
116
|
* Initialize the authenticator
|
|
112
117
|
*/
|
|
113
|
-
initialize(router: express.Router)
|
|
118
|
+
initialize?: (router: express.Router) => void;
|
|
119
|
+
|
|
114
120
|
/**
|
|
115
121
|
* Retrieve the middleware used to authenticate users.
|
|
116
122
|
*/
|
|
117
|
-
getMiddleware()
|
|
123
|
+
getMiddleware?: () => express.RequestHandler;
|
|
118
124
|
}
|
|
119
125
|
|
|
120
126
|
export type ServiceProcessor = (req: express.Request, res?: express.Response) => void | Promise<void>;
|
|
@@ -5,9 +5,9 @@ import * as bodyParser from 'body-parser';
|
|
|
5
5
|
import * as cookieParser from 'cookie-parser';
|
|
6
6
|
import * as debug from 'debug';
|
|
7
7
|
import * as express from 'express';
|
|
8
|
-
import { NextFunction, Request, Response } from 'express';
|
|
9
8
|
import * as _ from 'lodash';
|
|
10
9
|
import * as multer from 'multer';
|
|
10
|
+
import { routeRequiresAuthorization } from '../middlewares/routeRequiresAuthorization';
|
|
11
11
|
import * as Errors from './model/errors';
|
|
12
12
|
import { ServiceClass, ServiceMethod } from './model/metadata';
|
|
13
13
|
import {
|
|
@@ -53,8 +53,7 @@ export class ServerContainer {
|
|
|
53
53
|
public router: express.Router;
|
|
54
54
|
|
|
55
55
|
private debugger = {
|
|
56
|
-
build: debug('typescript-rest:server-container:build')
|
|
57
|
-
runtime: debug('typescript-rest:server-container:runtime')
|
|
56
|
+
build: debug('typescript-rest:server-container:build')
|
|
58
57
|
};
|
|
59
58
|
private upload: multer.Multer;
|
|
60
59
|
private serverClasses: Map<Function, ServiceClass> = new Map<Function, ServiceClass>();
|
|
@@ -114,7 +113,7 @@ export class ServerContainer {
|
|
|
114
113
|
if (this.authenticator) {
|
|
115
114
|
this.authenticator.forEach((auth, name) => {
|
|
116
115
|
this.debugger.build('Initializing authenticator: %s', name);
|
|
117
|
-
auth.initialize(this.router);
|
|
116
|
+
if (auth.initialize) auth.initialize(this.router);
|
|
118
117
|
});
|
|
119
118
|
}
|
|
120
119
|
this.serverClasses.forEach((classData) => {
|
|
@@ -337,24 +336,25 @@ export class ServerContainer {
|
|
|
337
336
|
if (this.authenticator && authenticatorMap) {
|
|
338
337
|
const authenticatorNames: Array<string> = Object.keys(authenticatorMap);
|
|
339
338
|
for (const authenticatorName of authenticatorNames) {
|
|
340
|
-
|
|
339
|
+
const roles: Array<string> = authenticatorMap[authenticatorName];
|
|
340
|
+
if (roles.length === 0) continue;
|
|
341
|
+
|
|
341
342
|
this.debugger.build(
|
|
342
343
|
'Registering an authenticator middleware <%s> for method <%s>.',
|
|
343
344
|
authenticatorName,
|
|
344
345
|
serviceMethod.name
|
|
345
346
|
);
|
|
347
|
+
|
|
346
348
|
const authenticator = this.getAuthenticator(authenticatorName);
|
|
347
|
-
result.push(authenticator.getMiddleware());
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
result.push(this.buildAuthMiddleware(authenticator, roles));
|
|
357
|
-
}
|
|
349
|
+
if (authenticator.getMiddleware) result.push(authenticator.getMiddleware());
|
|
350
|
+
|
|
351
|
+
this.debugger.build(
|
|
352
|
+
'Registering a role validator middleware <%s> for method <%s>.',
|
|
353
|
+
authenticatorName,
|
|
354
|
+
serviceMethod.name
|
|
355
|
+
);
|
|
356
|
+
this.debugger.build('Roles: <%j>.', roles);
|
|
357
|
+
result.push(routeRequiresAuthorization(authenticator, roles[0], ...roles.slice(1)));
|
|
358
358
|
}
|
|
359
359
|
}
|
|
360
360
|
|
|
@@ -365,21 +365,8 @@ export class ServerContainer {
|
|
|
365
365
|
if (!this.authenticator.has(authenticatorName)) {
|
|
366
366
|
throw new Error(`Invalid authenticator name ${authenticatorName}`);
|
|
367
367
|
}
|
|
368
|
-
return this.authenticator.get(authenticatorName);
|
|
369
|
-
}
|
|
370
368
|
|
|
371
|
-
|
|
372
|
-
return (req: Request, res: Response, next: NextFunction) => {
|
|
373
|
-
const requestRoles = authenticator.getRoles(req, res);
|
|
374
|
-
if (this.debugger.runtime.enabled) {
|
|
375
|
-
this.debugger.runtime('Validating authentication roles: <%j>.', requestRoles);
|
|
376
|
-
}
|
|
377
|
-
if (requestRoles.some((role: string) => roles.indexOf(role) >= 0)) {
|
|
378
|
-
next();
|
|
379
|
-
} else {
|
|
380
|
-
throw new Errors.ForbiddenError();
|
|
381
|
-
}
|
|
382
|
-
};
|
|
369
|
+
return this.authenticator.get(authenticatorName);
|
|
383
370
|
}
|
|
384
371
|
|
|
385
372
|
private buildParserMiddlewares(
|
package/src/typescript-rest.ts
CHANGED
|
@@ -7,6 +7,7 @@ import * as Return from './server/model/return-types';
|
|
|
7
7
|
export * from './decorators/methods';
|
|
8
8
|
export * from './decorators/parameters';
|
|
9
9
|
export * from './decorators/services';
|
|
10
|
+
export * from './middlewares/routeRequiresAuthorization';
|
|
10
11
|
export * from './server/model/server-types';
|
|
11
12
|
export * from './server/server';
|
|
12
13
|
|