@node-c/api-http 1.0.0-alpha10

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.
Files changed (68) hide show
  1. package/README.md +4 -0
  2. package/dist/common/definitions/common.constants.d.ts +9 -0
  3. package/dist/common/definitions/common.constants.js +14 -0
  4. package/dist/common/definitions/common.constants.js.map +1 -0
  5. package/dist/common/definitions/common.definitions.d.ts +9 -0
  6. package/dist/common/definitions/common.definitions.js +3 -0
  7. package/dist/common/definitions/common.definitions.js.map +1 -0
  8. package/dist/common/definitions/common.errors.d.ts +9 -0
  9. package/dist/common/definitions/common.errors.js +12 -0
  10. package/dist/common/definitions/common.errors.js.map +1 -0
  11. package/dist/common/definitions/index.d.ts +2 -0
  12. package/dist/common/definitions/index.js +19 -0
  13. package/dist/common/definitions/index.js.map +1 -0
  14. package/dist/exceptionFilters/http.exceptionFilters.httpException.d.ts +4 -0
  15. package/dist/exceptionFilters/http.exceptionFilters.httpException.js +26 -0
  16. package/dist/exceptionFilters/http.exceptionFilters.httpException.js.map +1 -0
  17. package/dist/exceptionFilters/index.d.ts +1 -0
  18. package/dist/exceptionFilters/index.js +18 -0
  19. package/dist/exceptionFilters/index.js.map +1 -0
  20. package/dist/index.d.ts +5 -0
  21. package/dist/index.js +22 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/interceptors/http.interceptors.authorization.d.ts +11 -0
  24. package/dist/interceptors/http.interceptors.authorization.js +87 -0
  25. package/dist/interceptors/http.interceptors.authorization.js.map +1 -0
  26. package/dist/interceptors/http.interceptors.error.d.ts +5 -0
  27. package/dist/interceptors/http.interceptors.error.js +66 -0
  28. package/dist/interceptors/http.interceptors.error.js.map +1 -0
  29. package/dist/interceptors/index.d.ts +2 -0
  30. package/dist/interceptors/index.js +19 -0
  31. package/dist/interceptors/index.js.map +1 -0
  32. package/dist/middlewares/http.middlewares.authentication.d.ts +13 -0
  33. package/dist/middlewares/http.middlewares.authentication.js +128 -0
  34. package/dist/middlewares/http.middlewares.authentication.js.map +1 -0
  35. package/dist/middlewares/http.middlewares.cors.d.ts +10 -0
  36. package/dist/middlewares/http.middlewares.cors.js +47 -0
  37. package/dist/middlewares/http.middlewares.cors.js.map +1 -0
  38. package/dist/middlewares/index.d.ts +2 -0
  39. package/dist/middlewares/index.js +19 -0
  40. package/dist/middlewares/index.js.map +1 -0
  41. package/dist/module/http.api.module.d.ts +13 -0
  42. package/dist/module/http.api.module.definitions.d.ts +14 -0
  43. package/dist/module/http.api.module.definitions.js +3 -0
  44. package/dist/module/http.api.module.definitions.js.map +1 -0
  45. package/dist/module/http.api.module.js +82 -0
  46. package/dist/module/http.api.module.js.map +1 -0
  47. package/dist/module/index.d.ts +2 -0
  48. package/dist/module/index.js +19 -0
  49. package/dist/module/index.js.map +1 -0
  50. package/package.json +29 -0
  51. package/src/common/definitions/common.constants.ts +16 -0
  52. package/src/common/definitions/common.definitions.ts +10 -0
  53. package/src/common/definitions/common.errors.ts +13 -0
  54. package/src/common/definitions/index.ts +2 -0
  55. package/src/exceptionFilters/http.exceptionFilters.httpException.ts +16 -0
  56. package/src/exceptionFilters/index.ts +1 -0
  57. package/src/index.ts +5 -0
  58. package/src/interceptors/http.interceptors.authorization.ts +82 -0
  59. package/src/interceptors/http.interceptors.error.ts +59 -0
  60. package/src/interceptors/index.ts +2 -0
  61. package/src/middlewares/http.middlewares.authentication.ts +111 -0
  62. package/src/middlewares/http.middlewares.cors.ts +37 -0
  63. package/src/middlewares/index.ts +2 -0
  64. package/src/module/http.api.module.definitions.ts +16 -0
  65. package/src/module/http.api.module.ts +69 -0
  66. package/src/module/index.ts +2 -0
  67. package/tsconfig.build.json +9 -0
  68. package/tsconfig.json +9 -0
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ # Node-C / API: HTTP
2
+ This is Node-C's package for setting up HTTP API modules.
3
+
4
+ The documentation can be found on the [Node-C Github repo homepage](https://github.com/RazorDude/node-c).
@@ -0,0 +1,9 @@
1
+ export declare enum Constants {
2
+ API_MODULE_AUTHORIZATION_SERVICE = "API_MODULE_AUTHORIZATION_SERVICE",
3
+ API_MODULE_NAME = "API_MODULE_NAME",
4
+ AUTHENTICATION_MIDDLEWARE_TOKEN_MANAGER_SERVICE = "AUTHENTICATION_MIDDLEWARE_TOKEN_MANAGER_SERVICE",
5
+ AUTHENTICATION_MIDDLEWARE_USERS_SERVICE = "AUTHENTICATION_MIDDLEWARE_USERS_SERVICE",
6
+ AUTHORIZATION_INTERCEPTOR = "AUTHORIZATION_INTERCEPTOR",
7
+ ERROR_INTERCEPTOR = "ERROR_INTERCEPTOR",
8
+ HTTP_EXCEPTION_FILTER = "HTTP_EXCEPTION_FILTER"
9
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Constants = void 0;
4
+ var Constants;
5
+ (function (Constants) {
6
+ Constants["API_MODULE_AUTHORIZATION_SERVICE"] = "API_MODULE_AUTHORIZATION_SERVICE";
7
+ Constants["API_MODULE_NAME"] = "API_MODULE_NAME";
8
+ Constants["AUTHENTICATION_MIDDLEWARE_TOKEN_MANAGER_SERVICE"] = "AUTHENTICATION_MIDDLEWARE_TOKEN_MANAGER_SERVICE";
9
+ Constants["AUTHENTICATION_MIDDLEWARE_USERS_SERVICE"] = "AUTHENTICATION_MIDDLEWARE_USERS_SERVICE";
10
+ Constants["AUTHORIZATION_INTERCEPTOR"] = "AUTHORIZATION_INTERCEPTOR";
11
+ Constants["ERROR_INTERCEPTOR"] = "ERROR_INTERCEPTOR";
12
+ Constants["HTTP_EXCEPTION_FILTER"] = "HTTP_EXCEPTION_FILTER";
13
+ })(Constants || (exports.Constants = Constants = {}));
14
+ //# sourceMappingURL=common.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.constants.js","sourceRoot":"","sources":["../../../src/common/definitions/common.constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAeX;AAfD,WAAY,SAAS;IAEnB,kFAAqE,CAAA;IAErE,gDAAmC,CAAA;IAEnC,gHAAmG,CAAA;IAEnG,gGAAmF,CAAA;IAEnF,oEAAuD,CAAA;IAEvD,oDAAuC,CAAA;IAEvC,4DAA+C,CAAA;AACjD,CAAC,EAfW,SAAS,yBAAT,SAAS,QAepB"}
@@ -0,0 +1,9 @@
1
+ import { Request } from 'express';
2
+ export interface RequestWithLocals<User> extends Request {
3
+ locals?: {
4
+ isAnonymous?: boolean;
5
+ user?: User;
6
+ [fieldName: string]: unknown;
7
+ };
8
+ rawBody?: string;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=common.definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.definitions.js","sourceRoot":"","sources":["../../../src/common/definitions/common.definitions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { GenericObject } from '@node-c/core';
2
+ export declare class ServerError implements Error {
3
+ data: {
4
+ statusCode: number;
5
+ } | GenericObject;
6
+ message: string;
7
+ name: string;
8
+ constructor(message: string, data?: GenericObject);
9
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServerError = void 0;
4
+ class ServerError {
5
+ constructor(message, data) {
6
+ this.message = message;
7
+ this.name = 'ServerError';
8
+ this.data = data || {};
9
+ }
10
+ }
11
+ exports.ServerError = ServerError;
12
+ //# sourceMappingURL=common.errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.errors.js","sourceRoot":"","sources":["../../../src/common/definitions/common.errors.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IAKtB,YAAY,OAAe,EAAE,IAAoB;QAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAVD,kCAUC"}
@@ -0,0 +1,2 @@
1
+ export * from './common.constants';
2
+ export * from './common.definitions';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common.constants"), exports);
18
+ __exportStar(require("./common.definitions"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/definitions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,uDAAqC"}
@@ -0,0 +1,4 @@
1
+ import { ArgumentsHost, ExceptionFilter, HttpException } from '@nestjs/common';
2
+ export declare class HttpExceptionFilter implements ExceptionFilter {
3
+ catch(exception: HttpException, host: ArgumentsHost): void;
4
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HttpExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let HttpExceptionFilter = class HttpExceptionFilter {
12
+ catch(exception, host) {
13
+ const ctx = host.switchToHttp();
14
+ const response = ctx.getResponse();
15
+ const status = exception.getStatus();
16
+ response.status(status).json({
17
+ statusCode: status,
18
+ message: exception.message
19
+ });
20
+ }
21
+ };
22
+ exports.HttpExceptionFilter = HttpExceptionFilter;
23
+ exports.HttpExceptionFilter = HttpExceptionFilter = __decorate([
24
+ (0, common_1.Catch)(common_1.HttpException)
25
+ ], HttpExceptionFilter);
26
+ //# sourceMappingURL=http.exceptionFilters.httpException.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.exceptionFilters.httpException.js","sourceRoot":"","sources":["../../src/exceptionFilters/http.exceptionFilters.httpException.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAsF;AAK/E,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,KAAK,CAAC,SAAwB,EAAE,IAAmB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC3B,UAAU,EAAE,MAAM;YAClB,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAVY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,cAAK,EAAC,sBAAa,CAAC;GACR,mBAAmB,CAU/B"}
@@ -0,0 +1 @@
1
+ export * from './http.exceptionFilters.httpException';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./http.exceptionFilters.httpException"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exceptionFilters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wEAAsD"}
@@ -0,0 +1,5 @@
1
+ export * from './common/definitions';
2
+ export * from './exceptionFilters';
3
+ export * from './interceptors';
4
+ export * from './middlewares';
5
+ export * from './module';
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common/definitions"), exports);
18
+ __exportStar(require("./exceptionFilters"), exports);
19
+ __exportStar(require("./interceptors"), exports);
20
+ __exportStar(require("./middlewares"), exports);
21
+ __exportStar(require("./module"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,qDAAmC;AACnC,iDAA+B;AAC/B,gDAA8B;AAC9B,2CAAyB"}
@@ -0,0 +1,11 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { ConfigProviderService } from '@node-c/core';
3
+ import { AuthorizationPoint, IAMAuthorizationService, UserWithPermissionsData } from '@node-c/domain-iam';
4
+ import { Observable } from 'rxjs';
5
+ export declare class HTTPAuthorizationInterceptor<User extends UserWithPermissionsData<unknown, unknown>> implements NestInterceptor {
6
+ protected authorizationService: IAMAuthorizationService<AuthorizationPoint<unknown>>;
7
+ protected configProvider: ConfigProviderService;
8
+ protected moduleName: string;
9
+ constructor(authorizationService: IAMAuthorizationService<AuthorizationPoint<unknown>>, configProvider: ConfigProviderService, moduleName: string);
10
+ intercept(context: ExecutionContext, next: CallHandler): Promise<Observable<unknown>>;
11
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.HTTPAuthorizationInterceptor = void 0;
25
+ const common_1 = require("@nestjs/common");
26
+ const core_1 = require("@node-c/core");
27
+ const domain_iam_1 = require("@node-c/domain-iam");
28
+ const general_tools_1 = require("@ramster/general-tools");
29
+ const definitions_1 = require("../common/definitions");
30
+ let HTTPAuthorizationInterceptor = class HTTPAuthorizationInterceptor {
31
+ constructor(authorizationService, configProvider, moduleName) {
32
+ this.authorizationService = authorizationService;
33
+ this.configProvider = configProvider;
34
+ this.moduleName = moduleName;
35
+ }
36
+ intercept(context, next) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const [req] = context.getArgs();
39
+ const locals = req.locals;
40
+ if (!locals) {
41
+ throw new common_1.HttpException('Forbidden', common_1.HttpStatus.FORBIDDEN);
42
+ }
43
+ else if (locals.isAnonymous) {
44
+ return next.handle();
45
+ }
46
+ const { moduleName } = this;
47
+ const controllerName = context.getClass().name;
48
+ const handlerName = context.getHandler().name;
49
+ const authorizationData = yield this.authorizationService.mapAuthorizationPoints(moduleName);
50
+ let controllerData = authorizationData[controllerName];
51
+ if (!controllerData) {
52
+ controllerData = authorizationData.__all;
53
+ }
54
+ const user = locals.user;
55
+ let handlerData = controllerData[handlerName];
56
+ if (!handlerData) {
57
+ handlerData = controllerData.__all;
58
+ if (!Object.keys(handlerData).length) {
59
+ const { endpointSecurityMode } = this.configProvider.config.api[moduleName];
60
+ if (!endpointSecurityMode || endpointSecurityMode === core_1.EndpointSecurityMode.Strict) {
61
+ console.info(`[${moduleName}][HTTPAuthorizationInterceptor]: No authorization point data for handler ${controllerName}.${handlerName}.`);
62
+ throw new common_1.HttpException('Forbidden', common_1.HttpStatus.FORBIDDEN);
63
+ }
64
+ return next.handle();
65
+ }
66
+ }
67
+ const { hasAccess, inputDataToBeMutated } = domain_iam_1.IAMAuthorizationService.checkAccess(handlerData, { body: req.body, headers: req.headers, params: req.params, query: req.query }, user);
68
+ if (!hasAccess) {
69
+ console.info(`[${moduleName}][HTTPAuthorizationInterceptor]: No user access to handler ${controllerName}.${handlerName}.`);
70
+ throw new common_1.HttpException('Forbidden', common_1.HttpStatus.FORBIDDEN);
71
+ }
72
+ for (const key in inputDataToBeMutated) {
73
+ (0, general_tools_1.setNested)(req, key, inputDataToBeMutated[key]);
74
+ }
75
+ return next.handle();
76
+ });
77
+ }
78
+ };
79
+ exports.HTTPAuthorizationInterceptor = HTTPAuthorizationInterceptor;
80
+ exports.HTTPAuthorizationInterceptor = HTTPAuthorizationInterceptor = __decorate([
81
+ (0, common_1.Injectable)(),
82
+ __param(0, (0, common_1.Inject)(definitions_1.Constants.API_MODULE_AUTHORIZATION_SERVICE)),
83
+ __param(2, (0, common_1.Inject)(definitions_1.Constants.API_MODULE_NAME)),
84
+ __metadata("design:paramtypes", [domain_iam_1.IAMAuthorizationService,
85
+ core_1.ConfigProviderService, String])
86
+ ], HTTPAuthorizationInterceptor);
87
+ //# sourceMappingURL=http.interceptors.authorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.interceptors.authorization.js","sourceRoot":"","sources":["../../src/interceptors/http.interceptors.authorization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ export declare class HTTPErrorInterceptor implements NestInterceptor {
4
+ intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
5
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HTTPErrorInterceptor = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const core_1 = require("@node-c/core");
12
+ const operators_1 = require("rxjs/operators");
13
+ const common_errors_1 = require("../common/definitions/common.errors");
14
+ let HTTPErrorInterceptor = class HTTPErrorInterceptor {
15
+ intercept(context, next) {
16
+ return next.handle().pipe((0, operators_1.catchError)(error => {
17
+ console.error(error);
18
+ let message = 'An error has occurred.';
19
+ let status = 500;
20
+ if (error instanceof core_1.ApplicationError || error instanceof common_errors_1.ServerError) {
21
+ if (error.message) {
22
+ message = error.message;
23
+ }
24
+ if (error.data) {
25
+ if ('errorCode' in error.data) {
26
+ status = error.data.errorCode;
27
+ }
28
+ else if ('statusCode' in error.data) {
29
+ status = error.data.statusCode;
30
+ }
31
+ else {
32
+ status = 400;
33
+ }
34
+ }
35
+ else {
36
+ status = 400;
37
+ }
38
+ }
39
+ else if (error.response) {
40
+ const { response } = error;
41
+ if (response.statusCode) {
42
+ status = response.statusCode;
43
+ }
44
+ if (response.message) {
45
+ message = response.message;
46
+ }
47
+ }
48
+ else if (error instanceof Error) {
49
+ if (error.message) {
50
+ message = error.message;
51
+ }
52
+ }
53
+ context
54
+ .switchToHttp()
55
+ .getResponse()
56
+ .status(status)
57
+ .json({ error: message instanceof Array ? message.join('\n') : message });
58
+ return [];
59
+ }));
60
+ }
61
+ };
62
+ exports.HTTPErrorInterceptor = HTTPErrorInterceptor;
63
+ exports.HTTPErrorInterceptor = HTTPErrorInterceptor = __decorate([
64
+ (0, common_1.Injectable)()
65
+ ], HTTPErrorInterceptor);
66
+ //# sourceMappingURL=http.interceptors.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.interceptors.error.js","sourceRoot":"","sources":["../../src/interceptors/http.interceptors.error.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4F;AAE5F,uCAAgD;AAGhD,8CAA4C;AAE5C,uEAAkE;AAG3D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,sBAAU,EAAC,KAAK,CAAC,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,OAAO,GAAsB,wBAAwB,CAAC;YAC1D,IAAI,MAAM,GAAG,GAAG,CAAC;YACjB,IAAI,KAAK,YAAY,uBAAgB,IAAI,KAAK,YAAY,2BAAW,EAAE,CAAC;gBACtE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC1B,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC9B,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAmB,CAAC;oBAC1C,CAAC;yBAAM,IAAI,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACtC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAoB,CAAC;oBAC3C,CAAC;yBAAM,CAAC;wBACN,MAAM,GAAG,GAAG,CAAC;oBACf,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,GAAG,CAAC;gBACf,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1B,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;gBAC3B,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACxB,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;gBAC/B,CAAC;gBACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAC7B,CAAC;YACH,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,OAAO;iBACJ,YAAY,EAAE;iBACd,WAAW,EAAE;iBACb,MAAM,CAAC,MAAM,CAAC;iBACd,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,OAAO,EAAE,CAAC;QAIZ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAhDY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;GACA,oBAAoB,CAgDhC"}
@@ -0,0 +1,2 @@
1
+ export * from './http.interceptors.authorization';
2
+ export * from './http.interceptors.error';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./http.interceptors.authorization"), exports);
18
+ __exportStar(require("./http.interceptors.error"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,4DAA0C"}
@@ -0,0 +1,13 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { ConfigProviderService } from '@node-c/core';
3
+ import { IAMTokenManagerService, IAMUsersService, UserTokenEnityFields } from '@node-c/domain-iam';
4
+ import { NextFunction, Response } from 'express';
5
+ import { RequestWithLocals } from '../common/definitions';
6
+ export declare class HTTPAuthenticationMiddleware<User extends object> implements NestMiddleware {
7
+ protected configProvider: ConfigProviderService;
8
+ protected moduleName: string;
9
+ protected tokenManager: IAMTokenManagerService<UserTokenEnityFields>;
10
+ protected usersService: IAMUsersService<User>;
11
+ constructor(configProvider: ConfigProviderService, moduleName: string, tokenManager: IAMTokenManagerService<UserTokenEnityFields>, usersService: IAMUsersService<User>);
12
+ use(req: RequestWithLocals<unknown>, res: Response, next: NextFunction): void;
13
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.HTTPAuthenticationMiddleware = void 0;
25
+ const common_1 = require("@nestjs/common");
26
+ const core_1 = require("@node-c/core");
27
+ const domain_iam_1 = require("@node-c/domain-iam");
28
+ const general_tools_1 = require("@ramster/general-tools");
29
+ const definitions_1 = require("../common/definitions");
30
+ let HTTPAuthenticationMiddleware = class HTTPAuthenticationMiddleware {
31
+ constructor(configProvider, moduleName, tokenManager, usersService) {
32
+ this.configProvider = configProvider;
33
+ this.moduleName = moduleName;
34
+ this.tokenManager = tokenManager;
35
+ this.usersService = usersService;
36
+ }
37
+ use(req, res, next) {
38
+ (() => __awaiter(this, void 0, void 0, function* () {
39
+ var _a;
40
+ const { anonymousAccessRoutes } = this.configProvider.config.api[this.moduleName];
41
+ if (!req.locals) {
42
+ req.locals = {};
43
+ }
44
+ if (anonymousAccessRoutes && Object.keys(anonymousAccessRoutes).length) {
45
+ const originalUrl = req.originalUrl.split('?')[0];
46
+ let isAnonymous = false;
47
+ for (const route in anonymousAccessRoutes) {
48
+ if ((0, general_tools_1.checkRoutes)(originalUrl, [route]) &&
49
+ anonymousAccessRoutes[route].find(method => method === req.method.toLowerCase())) {
50
+ isAnonymous = true;
51
+ break;
52
+ }
53
+ }
54
+ if (isAnonymous) {
55
+ req.locals.isAnonymous = true;
56
+ next();
57
+ return;
58
+ }
59
+ }
60
+ const { tokenManager, usersService } = this;
61
+ let tokens = [];
62
+ let authToken = req.headers.authorization;
63
+ let authTokenIsNew = false;
64
+ let refreshToken;
65
+ let tokenContent;
66
+ let useCookie = false;
67
+ if (typeof authToken === 'string' && authToken.length && authToken.match(/^Bearer\s/)) {
68
+ tokens = authToken.split(' ');
69
+ if (tokens.length) {
70
+ authToken = tokens[1];
71
+ refreshToken = tokens[2];
72
+ }
73
+ }
74
+ else {
75
+ authToken = req.cookies['sid'];
76
+ useCookie = true;
77
+ }
78
+ if (!authToken) {
79
+ console.error('Missing auth token.');
80
+ throw new common_1.HttpException('Unauthorized', common_1.HttpStatus.UNAUTHORIZED);
81
+ }
82
+ try {
83
+ const tokenRes = yield tokenManager.verifyAccessToken(authToken, {
84
+ deleteFromStoreIfExpired: true,
85
+ identifierDataField: 'userId',
86
+ persistNewToken: true,
87
+ purgeStoreOnRenew: true,
88
+ refreshToken,
89
+ refreshTokenAccessTokenIdentifierDataField: 'accessToken'
90
+ });
91
+ tokenContent = tokenRes.content;
92
+ if (tokenRes.newToken) {
93
+ authTokenIsNew = true;
94
+ }
95
+ }
96
+ catch (e) {
97
+ console.error('Failed to parse the access or refresh token:', e);
98
+ throw new common_1.HttpException('Unauthorized', common_1.HttpStatus.UNAUTHORIZED);
99
+ }
100
+ if (authTokenIsNew) {
101
+ res.setHeader('Authorization', `Bearer ${authToken}${refreshToken ? ` ${refreshToken}` : ''}`);
102
+ if (useCookie) {
103
+ res.cookie('sid', authToken);
104
+ }
105
+ }
106
+ const userId = (_a = tokenContent === null || tokenContent === void 0 ? void 0 : tokenContent.data) === null || _a === void 0 ? void 0 : _a.userId;
107
+ if (!userId) {
108
+ console.error('Missing userId in the tokenContent data.');
109
+ throw new common_1.HttpException('Unauthorized', common_1.HttpStatus.UNAUTHORIZED);
110
+ }
111
+ req.locals.user = yield usersService.getUserWithPermissionsData({ filters: { id: userId } });
112
+ next();
113
+ }))().then(() => true, err => {
114
+ console.error(err);
115
+ res.status((err && err.status) || common_1.HttpStatus.INTERNAL_SERVER_ERROR).end();
116
+ });
117
+ }
118
+ };
119
+ exports.HTTPAuthenticationMiddleware = HTTPAuthenticationMiddleware;
120
+ exports.HTTPAuthenticationMiddleware = HTTPAuthenticationMiddleware = __decorate([
121
+ (0, common_1.Injectable)(),
122
+ __param(1, (0, common_1.Inject)(definitions_1.Constants.API_MODULE_NAME)),
123
+ __param(2, (0, common_1.Inject)(definitions_1.Constants.AUTHENTICATION_MIDDLEWARE_TOKEN_MANAGER_SERVICE)),
124
+ __param(3, (0, common_1.Inject)(definitions_1.Constants.AUTHENTICATION_MIDDLEWARE_USERS_SERVICE)),
125
+ __metadata("design:paramtypes", [core_1.ConfigProviderService, String, domain_iam_1.IAMTokenManagerService,
126
+ domain_iam_1.IAMUsersService])
127
+ ], HTTPAuthenticationMiddleware);
128
+ //# sourceMappingURL=http.middlewares.authentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.middlewares.authentication.js","sourceRoot":"","sources":["../../src/middlewares/http.middlewares.authentication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { ConfigProviderService } from '@node-c/core';
3
+ import { NextFunction, Response } from 'express';
4
+ import { RequestWithLocals } from '../common/definitions';
5
+ export declare class HTTPCORSMiddleware implements NestMiddleware {
6
+ protected configProvider: ConfigProviderService;
7
+ protected moduleName: string;
8
+ constructor(configProvider: ConfigProviderService, moduleName: string);
9
+ use(req: RequestWithLocals<unknown>, res: Response, next: NextFunction): void;
10
+ }