@bearei/server-common 0.0.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.
Files changed (112) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/action-log/action-log.interface.d.ts +12 -0
  4. package/dist/action-log/action-log.interface.js +3 -0
  5. package/dist/action-log/action-log.interface.js.map +1 -0
  6. package/dist/action-log/action-log.module.d.ts +2 -0
  7. package/dist/action-log/action-log.module.js +23 -0
  8. package/dist/action-log/action-log.module.js.map +1 -0
  9. package/dist/action-log/action-log.service.d.ts +9 -0
  10. package/dist/action-log/action-log.service.js +35 -0
  11. package/dist/action-log/action-log.service.js.map +1 -0
  12. package/dist/action-log/index.d.ts +3 -0
  13. package/dist/action-log/index.js +20 -0
  14. package/dist/action-log/index.js.map +1 -0
  15. package/dist/app.decorator.d.ts +6 -0
  16. package/dist/app.decorator.js +11 -0
  17. package/dist/app.decorator.js.map +1 -0
  18. package/dist/app.dto.d.ts +24 -0
  19. package/dist/app.dto.js +113 -0
  20. package/dist/app.dto.js.map +1 -0
  21. package/dist/app.entity.d.ts +11 -0
  22. package/dist/app.entity.js +87 -0
  23. package/dist/app.entity.js.map +1 -0
  24. package/dist/app.interface.d.ts +33 -0
  25. package/dist/app.interface.js +39 -0
  26. package/dist/app.interface.js.map +1 -0
  27. package/dist/authentication/access/access.guard.d.ts +9 -0
  28. package/dist/authentication/access/access.guard.js +62 -0
  29. package/dist/authentication/access/access.guard.js.map +1 -0
  30. package/dist/authentication/access/access.interface.d.ts +4 -0
  31. package/dist/authentication/access/access.interface.js +9 -0
  32. package/dist/authentication/access/access.interface.js.map +1 -0
  33. package/dist/authentication/access/index.d.ts +2 -0
  34. package/dist/authentication/access/index.js +19 -0
  35. package/dist/authentication/access/index.js.map +1 -0
  36. package/dist/authentication/auth/auth.interface.d.ts +3 -0
  37. package/dist/authentication/auth/auth.interface.js +3 -0
  38. package/dist/authentication/auth/auth.interface.js.map +1 -0
  39. package/dist/authentication/auth/auth.module.d.ts +2 -0
  40. package/dist/authentication/auth/auth.module.js +23 -0
  41. package/dist/authentication/auth/auth.module.js.map +1 -0
  42. package/dist/authentication/auth/auth.service.d.ts +8 -0
  43. package/dist/authentication/auth/auth.service.js +31 -0
  44. package/dist/authentication/auth/auth.service.js.map +1 -0
  45. package/dist/authentication/auth/index.d.ts +3 -0
  46. package/dist/authentication/auth/index.js +20 -0
  47. package/dist/authentication/auth/index.js.map +1 -0
  48. package/dist/authentication/index.d.ts +3 -0
  49. package/dist/authentication/index.js +20 -0
  50. package/dist/authentication/index.js.map +1 -0
  51. package/dist/authentication/permission/index.d.ts +2 -0
  52. package/dist/authentication/permission/index.js +19 -0
  53. package/dist/authentication/permission/index.js.map +1 -0
  54. package/dist/authentication/permission/permission.guard.d.ts +9 -0
  55. package/dist/authentication/permission/permission.guard.js +46 -0
  56. package/dist/authentication/permission/permission.guard.js.map +1 -0
  57. package/dist/authentication/permission/permission.interface.d.ts +35 -0
  58. package/dist/authentication/permission/permission.interface.js +40 -0
  59. package/dist/authentication/permission/permission.interface.js.map +1 -0
  60. package/dist/base/base.interface.d.ts +42 -0
  61. package/dist/base/base.interface.js +3 -0
  62. package/dist/base/base.interface.js.map +1 -0
  63. package/dist/base/base.module.d.ts +2 -0
  64. package/dist/base/base.module.js +23 -0
  65. package/dist/base/base.module.js.map +1 -0
  66. package/dist/base/base.service.d.ts +29 -0
  67. package/dist/base/base.service.js +212 -0
  68. package/dist/base/base.service.js.map +1 -0
  69. package/dist/base/index.d.ts +2 -0
  70. package/dist/base/index.js +19 -0
  71. package/dist/base/index.js.map +1 -0
  72. package/dist/external/external.interface.d.ts +41 -0
  73. package/dist/external/external.interface.js +3 -0
  74. package/dist/external/external.interface.js.map +1 -0
  75. package/dist/external/external.module.d.ts +2 -0
  76. package/dist/external/external.module.js +24 -0
  77. package/dist/external/external.module.js.map +1 -0
  78. package/dist/external/external.service.d.ts +12 -0
  79. package/dist/external/external.service.js +77 -0
  80. package/dist/external/external.service.js.map +1 -0
  81. package/dist/external/index.d.ts +3 -0
  82. package/dist/external/index.js +20 -0
  83. package/dist/external/index.js.map +1 -0
  84. package/dist/index.d.ts +8 -0
  85. package/dist/index.js +25 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/redis/index.d.ts +3 -0
  88. package/dist/redis/index.js +20 -0
  89. package/dist/redis/index.js.map +1 -0
  90. package/dist/redis/redis.interface.d.ts +4 -0
  91. package/dist/redis/redis.interface.js +3 -0
  92. package/dist/redis/redis.interface.js.map +1 -0
  93. package/dist/redis/redis.module.d.ts +2 -0
  94. package/dist/redis/redis.module.js +23 -0
  95. package/dist/redis/redis.module.js.map +1 -0
  96. package/dist/redis/redis.service.d.ts +10 -0
  97. package/dist/redis/redis.service.js +44 -0
  98. package/dist/redis/redis.service.js.map +1 -0
  99. package/dist/tsconfig.build.tsbuildinfo +1 -0
  100. package/dist/util/error.util.d.ts +3 -0
  101. package/dist/util/error.util.js +45 -0
  102. package/dist/util/error.util.js.map +1 -0
  103. package/dist/util/format.util.d.ts +3 -0
  104. package/dist/util/format.util.js +11 -0
  105. package/dist/util/format.util.js.map +1 -0
  106. package/dist/util/index.d.ts +3 -0
  107. package/dist/util/index.js +20 -0
  108. package/dist/util/index.js.map +1 -0
  109. package/dist/util/util.interface.d.ts +16 -0
  110. package/dist/util/util.interface.js +3 -0
  111. package/dist/util/util.interface.js.map +1 -0
  112. package/package.json +106 -0
@@ -0,0 +1,62 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuthGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const app_decorator_1 = require("../../app.decorator");
16
+ const app_interface_1 = require("../../app.interface");
17
+ const util_1 = require("../../util");
18
+ const auth_1 = require("../auth");
19
+ const access_interface_1 = require("./access.interface");
20
+ let AuthGuard = class AuthGuard {
21
+ constructor(authService, reflector) {
22
+ this.authService = authService;
23
+ this.reflector = reflector;
24
+ }
25
+ canActivate(context) {
26
+ const accesses = [access_interface_1.Access.GUEST, access_interface_1.Access.USER];
27
+ const requiredAccesses = this.reflector.getAllAndOverride(app_decorator_1.IS_PUBLIC_KEY, [
28
+ context.getHandler(),
29
+ context.getClass()
30
+ ]);
31
+ const request = context.switchToHttp().getRequest();
32
+ const headers = request.headers;
33
+ const isPublic = requiredAccesses?.every(access => accesses.includes(access));
34
+ if (headers['x-internal'] ?? isPublic) {
35
+ return true;
36
+ }
37
+ const token = (0, util_1.formatToken)(headers);
38
+ !token &&
39
+ (0, util_1.throwError)({
40
+ code: 401004,
41
+ message: 'No required authentication token found; a token is essential for access authentication'
42
+ })(app_interface_1.APIError.UNAUTHORIZED);
43
+ return this.authService.authAccess({ headers }).then(payload => {
44
+ payload.sub === 'guest' &&
45
+ requiredAccesses &&
46
+ !requiredAccesses.includes(access_interface_1.Access.GUEST) &&
47
+ (0, util_1.throwError)({
48
+ code: 401005,
49
+ message: 'The current resource is not accessible to guest users'
50
+ })(app_interface_1.APIError.UNAUTHORIZED);
51
+ request['user'] = payload;
52
+ return true;
53
+ });
54
+ }
55
+ };
56
+ exports.AuthGuard = AuthGuard;
57
+ exports.AuthGuard = AuthGuard = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __metadata("design:paramtypes", [auth_1.AuthService,
60
+ core_1.Reflector])
61
+ ], AuthGuard);
62
+ //# sourceMappingURL=access.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.guard.js","sourceRoot":"","sources":["../../../src/authentication/access/access.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAwE;AACxE,uCAAsC;AACtC,uDAAiD;AACjD,uDAA4C;AAE5C,qCAAkD;AAClD,kCAAmC;AACnC,yDAAyC;AAGlC,IAAM,SAAS,GAAf,MAAM,SAAS;IAClB,YACqB,WAAwB,EACxB,SAAoB;QADpB,gBAAW,GAAX,WAAW,CAAa;QACxB,cAAS,GAAT,SAAS,CAAW;IACtC,CAAC;IAEJ,WAAW,CAAC,OAAyB;QACjC,MAAM,QAAQ,GAAG,CAAC,yBAAM,CAAC,KAAK,EAAE,yBAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,MAAM,gBAAgB,GAAa,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,6BAAa,EAAE;YAC/E,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACrB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAc,CAAA;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,QAAQ,GAAG,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QAE7E,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,CAAA;QACf,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAA;QAElC,CAAC,KAAK;YACF,IAAA,iBAAU,EAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,wFAAwF;aACpG,CAAC,CAAC,wBAAQ,CAAC,YAAY,CAAC,CAAA;QAE7B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACzD,OAAO,CAAC,GAAG,KAAK,OAAO;gBACnB,gBAAgB;gBAChB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,yBAAM,CAAC,KAAK,CAAC;gBACxC,IAAA,iBAAU,EAAC;oBACP,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,uDAAuD;iBACnE,CAAC,CAAC,wBAAQ,CAAC,YAAY,CAAC,CAAA;YAE7B,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAA;YAEzB,OAAO,IAAI,CAAA;QACf,CAAC,CAAC,CAAA;IACN,CAAC;CACJ,CAAA;AA3CY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;qCAGyB,kBAAW;QACb,gBAAS;GAHhC,SAAS,CA2CrB"}
@@ -0,0 +1,4 @@
1
+ export declare enum Access {
2
+ USER = "user",
3
+ GUEST = "guest"
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Access = void 0;
4
+ var Access;
5
+ (function (Access) {
6
+ Access["USER"] = "user";
7
+ Access["GUEST"] = "guest";
8
+ })(Access || (exports.Access = Access = {}));
9
+ //# sourceMappingURL=access.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.interface.js","sourceRoot":"","sources":["../../../src/authentication/access/access.interface.ts"],"names":[],"mappings":";;;AAAA,IAAY,MAGX;AAHD,WAAY,MAAM;IACd,uBAAa,CAAA;IACb,yBAAe,CAAA;AACnB,CAAC,EAHW,MAAM,sBAAN,MAAM,QAGjB"}
@@ -0,0 +1,2 @@
1
+ export * from './access.guard';
2
+ export * from './access.interface';
@@ -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("./access.guard"), exports);
18
+ __exportStar(require("./access.interface"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/authentication/access/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,qDAAkC"}
@@ -0,0 +1,3 @@
1
+ import { AuthExternalAccessOptions, AuthExternalPermissionOptions } from '../../external';
2
+ export type AuthAccessOptions = AuthExternalAccessOptions;
3
+ export type AuthPermissionOptions = AuthExternalPermissionOptions;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.interface.js","sourceRoot":"","sources":["../../../src/authentication/auth/auth.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare class AuthModule {
2
+ }
@@ -0,0 +1,23 @@
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.AuthModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const external_1 = require("../../external");
12
+ const auth_service_1 = require("./auth.service");
13
+ let AuthModule = class AuthModule {
14
+ };
15
+ exports.AuthModule = AuthModule;
16
+ exports.AuthModule = AuthModule = __decorate([
17
+ (0, common_1.Module)({
18
+ exports: [auth_service_1.AuthService],
19
+ imports: [external_1.ExternalModule],
20
+ providers: [auth_service_1.AuthService]
21
+ })
22
+ ], AuthModule);
23
+ //# sourceMappingURL=auth.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../../src/authentication/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAqC;AACrC,6CAA6C;AAC7C,iDAA0C;AAOnC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IALtB,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE,CAAC,0BAAW,CAAC;QACtB,OAAO,EAAE,CAAC,yBAAc,CAAC;QACzB,SAAS,EAAE,CAAC,0BAAW,CAAC;KAC3B,CAAC;GACW,UAAU,CAAG"}
@@ -0,0 +1,8 @@
1
+ import { ExternalService } from '../../external';
2
+ import { AuthAccessOptions, AuthPermissionOptions } from './auth.interface';
3
+ export declare class AuthService {
4
+ private readonly externalService;
5
+ constructor(externalService: ExternalService);
6
+ authAccess(options: AuthAccessOptions): Promise<import("../../external").AuthenticatedToken>;
7
+ authPermission(options: AuthPermissionOptions): Promise<import("../../external").AuthenticatedPermission>;
8
+ }
@@ -0,0 +1,31 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuthService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const external_1 = require("../../external");
15
+ let AuthService = class AuthService {
16
+ constructor(externalService) {
17
+ this.externalService = externalService;
18
+ }
19
+ async authAccess(options) {
20
+ return this.externalService.authAccess(options);
21
+ }
22
+ async authPermission(options) {
23
+ return this.externalService.authPermission(options);
24
+ }
25
+ };
26
+ exports.AuthService = AuthService;
27
+ exports.AuthService = AuthService = __decorate([
28
+ (0, common_1.Injectable)(),
29
+ __metadata("design:paramtypes", [external_1.ExternalService])
30
+ ], AuthService);
31
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/authentication/auth/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyC;AACzC,6CAA8C;AAIvC,IAAM,WAAW,GAAjB,MAAM,WAAW;IACpB,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAEjE,KAAK,CAAC,UAAU,CAAC,OAA0B;QACvC,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA8B;QAC/C,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACvD,CAAC;CACJ,CAAA;AAVY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAEqC,0BAAe;GADpD,WAAW,CAUvB"}
@@ -0,0 +1,3 @@
1
+ export * from './auth.interface';
2
+ export * from './auth.module';
3
+ export * from './auth.service';
@@ -0,0 +1,20 @@
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("./auth.interface"), exports);
18
+ __exportStar(require("./auth.module"), exports);
19
+ __exportStar(require("./auth.service"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/authentication/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC;AAChC,gDAA6B;AAC7B,iDAA8B"}
@@ -0,0 +1,3 @@
1
+ export * from './access';
2
+ export * from './auth';
3
+ export * from './permission';
@@ -0,0 +1,20 @@
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("./access"), exports);
18
+ __exportStar(require("./auth"), exports);
19
+ __exportStar(require("./permission"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authentication/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,yCAAsB;AACtB,+CAA4B"}
@@ -0,0 +1,2 @@
1
+ export * from './permission.guard';
2
+ export * from './permission.interface';
@@ -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("./permission.guard"), exports);
18
+ __exportStar(require("./permission.interface"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/authentication/permission/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC;AAClC,yDAAsC"}
@@ -0,0 +1,9 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { AuthService } from '../auth';
4
+ export declare class PermissionGuard implements CanActivate {
5
+ private readonly authService;
6
+ private readonly reflector;
7
+ constructor(authService: AuthService, reflector: Reflector);
8
+ canActivate(context: ExecutionContext): true | Promise<boolean>;
9
+ }
@@ -0,0 +1,46 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.PermissionGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const app_decorator_1 = require("../../app.decorator");
16
+ const auth_1 = require("../auth");
17
+ let PermissionGuard = class PermissionGuard {
18
+ constructor(authService, reflector) {
19
+ this.authService = authService;
20
+ this.reflector = reflector;
21
+ }
22
+ canActivate(context) {
23
+ const requiredPermissions = this.reflector.getAllAndOverride(app_decorator_1.AUTH_PERMISSIONS_KEY, [
24
+ context.getHandler(),
25
+ context.getClass()
26
+ ]);
27
+ if (!requiredPermissions) {
28
+ return true;
29
+ }
30
+ const { headers, params, user } = context.switchToHttp().getRequest();
31
+ const isSelf = user?.sub === params.id;
32
+ if (headers['x-internal'] ?? isSelf) {
33
+ return true;
34
+ }
35
+ return this.authService
36
+ .authPermission({ findOptions: { keys: requiredPermissions, userId: user.sub }, headers: headers })
37
+ .then(({ result }) => result === 'successes');
38
+ }
39
+ };
40
+ exports.PermissionGuard = PermissionGuard;
41
+ exports.PermissionGuard = PermissionGuard = __decorate([
42
+ (0, common_1.Injectable)(),
43
+ __metadata("design:paramtypes", [auth_1.AuthService,
44
+ core_1.Reflector])
45
+ ], PermissionGuard);
46
+ //# sourceMappingURL=permission.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.guard.js","sourceRoot":"","sources":["../../../src/authentication/permission/permission.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAwE;AACxE,uCAAsC;AACtC,uDAAwD;AAExD,kCAAmC;AAI5B,IAAM,eAAe,GAArB,MAAM,eAAe;IACxB,YACqB,WAAwB,EACxB,SAAoB;QADpB,gBAAW,GAAX,WAAW,CAAa;QACxB,cAAS,GAAT,SAAS,CAAW;IACtC,CAAC;IAEJ,WAAW,CAAC,OAAyB;QACjC,MAAM,mBAAmB,GAAiB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,oCAAoB,EAAE;YAC7F,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACrB,CAAC,CAAA;QAEF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;QAED,MAAM,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAc,CAAA;QAC/E,MAAM,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,EAAE,CAAA;QAEtC,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,CAAA;QACf,CAAC;QAED,OAAO,IAAI,CAAC,WAAW;aAClB,cAAc,CAAC,EAAC,WAAW,EAAE,EAAC,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC;aAC9F,IAAI,CAAC,CAAC,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA;IACnD,CAAC;CACJ,CAAA;AA3BY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAGyB,kBAAW;QACb,gBAAS;GAHhC,eAAe,CA2B3B"}
@@ -0,0 +1,35 @@
1
+ export declare enum Permission {
2
+ CREATE_ACTION_LOG = "create:actionLog",
3
+ CREATE_EMAIL = "create:email",
4
+ CREATE_PERMISSION = "create:permission",
5
+ CREATE_PROJECT = "create:project",
6
+ CREATE_RESOURCE = "create:resource",
7
+ CREATE_ROLE = "create:role",
8
+ CREATE_ROLE_GROUP = "create:roleGroup",
9
+ CREATE_USER = "create:user",
10
+ CREATE_VERSION_LOG = "create:versionLog",
11
+ DELETE_EMAIL = "delete:email",
12
+ DELETE_PERMISSION = "delete:permission",
13
+ DELETE_PROJECT = "delete:project",
14
+ DELETE_RESOURCE = "delete:resource",
15
+ DELETE_ROLE = "delete:role",
16
+ DELETE_ROLE_GROUP = "delete:roleGroup",
17
+ DELETE_USER = "delete:user",
18
+ DELETE_VERSION_LOG = "delete:versionLog",
19
+ UPDATE_EMAIL = "update:email",
20
+ UPDATE_PERMISSION = "update:permission",
21
+ UPDATE_PROJECT = "update:project",
22
+ UPDATE_RESOURCE = "update:resource",
23
+ UPDATE_ROLE = "update:role",
24
+ UPDATE_ROLE_GROUP = "update:roleGroup",
25
+ UPDATE_USER = "update:user",
26
+ UPDATE_VERSION_LOG = "update:versionLog",
27
+ VIEW_ACTION_LOG = "view:actionLog",
28
+ VIEW_EMAIL = "view:email",
29
+ VIEW_PERMISSION = "view:permission",
30
+ VIEW_PROJECT = "view:project",
31
+ VIEW_RESOURCE = "view:resource",
32
+ VIEW_ROLE = "view:role",
33
+ VIEW_ROLE_GROUP = "view:roleGroup",
34
+ VIEW_USER = "view:user"
35
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Permission = void 0;
4
+ var Permission;
5
+ (function (Permission) {
6
+ Permission["CREATE_ACTION_LOG"] = "create:actionLog";
7
+ Permission["CREATE_EMAIL"] = "create:email";
8
+ Permission["CREATE_PERMISSION"] = "create:permission";
9
+ Permission["CREATE_PROJECT"] = "create:project";
10
+ Permission["CREATE_RESOURCE"] = "create:resource";
11
+ Permission["CREATE_ROLE"] = "create:role";
12
+ Permission["CREATE_ROLE_GROUP"] = "create:roleGroup";
13
+ Permission["CREATE_USER"] = "create:user";
14
+ Permission["CREATE_VERSION_LOG"] = "create:versionLog";
15
+ Permission["DELETE_EMAIL"] = "delete:email";
16
+ Permission["DELETE_PERMISSION"] = "delete:permission";
17
+ Permission["DELETE_PROJECT"] = "delete:project";
18
+ Permission["DELETE_RESOURCE"] = "delete:resource";
19
+ Permission["DELETE_ROLE"] = "delete:role";
20
+ Permission["DELETE_ROLE_GROUP"] = "delete:roleGroup";
21
+ Permission["DELETE_USER"] = "delete:user";
22
+ Permission["DELETE_VERSION_LOG"] = "delete:versionLog";
23
+ Permission["UPDATE_EMAIL"] = "update:email";
24
+ Permission["UPDATE_PERMISSION"] = "update:permission";
25
+ Permission["UPDATE_PROJECT"] = "update:project";
26
+ Permission["UPDATE_RESOURCE"] = "update:resource";
27
+ Permission["UPDATE_ROLE"] = "update:role";
28
+ Permission["UPDATE_ROLE_GROUP"] = "update:roleGroup";
29
+ Permission["UPDATE_USER"] = "update:user";
30
+ Permission["UPDATE_VERSION_LOG"] = "update:versionLog";
31
+ Permission["VIEW_ACTION_LOG"] = "view:actionLog";
32
+ Permission["VIEW_EMAIL"] = "view:email";
33
+ Permission["VIEW_PERMISSION"] = "view:permission";
34
+ Permission["VIEW_PROJECT"] = "view:project";
35
+ Permission["VIEW_RESOURCE"] = "view:resource";
36
+ Permission["VIEW_ROLE"] = "view:role";
37
+ Permission["VIEW_ROLE_GROUP"] = "view:roleGroup";
38
+ Permission["VIEW_USER"] = "view:user";
39
+ })(Permission || (exports.Permission = Permission = {}));
40
+ //# sourceMappingURL=permission.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.interface.js","sourceRoot":"","sources":["../../../src/authentication/permission/permission.interface.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAkCX;AAlCD,WAAY,UAAU;IAClB,oDAAsC,CAAA;IACtC,2CAA6B,CAAA;IAC7B,qDAAuC,CAAA;IACvC,+CAAiC,CAAA;IACjC,iDAAmC,CAAA;IACnC,yCAA2B,CAAA;IAC3B,oDAAsC,CAAA;IACtC,yCAA2B,CAAA;IAC3B,sDAAwC,CAAA;IACxC,2CAA6B,CAAA;IAC7B,qDAAuC,CAAA;IACvC,+CAAiC,CAAA;IACjC,iDAAmC,CAAA;IACnC,yCAA2B,CAAA;IAC3B,oDAAsC,CAAA;IACtC,yCAA2B,CAAA;IAC3B,sDAAwC,CAAA;IACxC,2CAA6B,CAAA;IAC7B,qDAAuC,CAAA;IACvC,+CAAiC,CAAA;IACjC,iDAAmC,CAAA;IACnC,yCAA2B,CAAA;IAC3B,oDAAsC,CAAA;IACtC,yCAA2B,CAAA;IAC3B,sDAAwC,CAAA;IACxC,gDAAkC,CAAA;IAClC,uCAAyB,CAAA;IACzB,iDAAmC,CAAA;IACnC,2CAA6B,CAAA;IAC7B,6CAA+B,CAAA;IAC/B,qCAAuB,CAAA;IACvB,gDAAkC,CAAA;IAClC,qCAAuB,CAAA;AAC3B,CAAC,EAlCW,UAAU,0BAAV,UAAU,QAkCrB"}
@@ -0,0 +1,42 @@
1
+ import { DeepPartial, EntityManager, FindManyOptions, FindOptionsWhere } from 'typeorm';
2
+ import { ActionLogOptions } from '../action-log';
3
+ import { IndexDTO, NotIdDTO } from '../app.dto';
4
+ import { APIError, APIHeaders } from '../app.interface';
5
+ export interface BaseServiceOptions<T> extends Pick<ActionLogOptions, 'enableLogging'> {
6
+ entityManager?: EntityManager;
7
+ entityOptions: DeepPartial<T>;
8
+ findOptions: FindOptionsWhere<T>;
9
+ headers: APIHeaders;
10
+ preValidateOptions?: Omit<PreValidateOptions<T>, 'serviceName' | 'actionLogOptions'>;
11
+ serviceName: string;
12
+ }
13
+ export type CreateOptions<T> = Omit<BaseServiceOptions<T>, 'findOptions'>;
14
+ export type DelOptions<T> = Omit<BaseServiceOptions<T>, 'entityOptions'>;
15
+ export interface UpdateOptions<T> extends Omit<BaseServiceOptions<T>, 'preValidateOptions'> {
16
+ preValidateOptions?: Omit<PreValidateOptions<T>, 'serviceName' | 'actionLogOptions' | 'validateKeys'> & {
17
+ validateKeys?: (keyof FindOptionsWhere<T>)[];
18
+ };
19
+ }
20
+ export interface UpdateLinkOptions<T> extends Omit<BaseServiceOptions<T>, 'entityOptions'> {
21
+ entityIds: string[];
22
+ linkKey: string;
23
+ }
24
+ export interface FindOptions<T> {
25
+ findManyOptions?: FindManyOptions<T>;
26
+ findOptions: FindOptionsWhere<T> & Partial<IndexDTO>;
27
+ }
28
+ export interface FindOneOptions<T> extends Omit<BaseServiceOptions<T>, 'headers' | 'entityOptions'> {
29
+ excludeConditions?: (keyof T)[];
30
+ }
31
+ export interface PreValidateOptions<T> {
32
+ actionLogOptions?: ActionLogOptions;
33
+ findOptions: FindOptionsWhere<T> & NotIdDTO;
34
+ serviceName: string;
35
+ validateKeys?: (keyof FindOptionsWhere<T>)[][] | (keyof FindOptionsWhere<T>)[];
36
+ validateMethod?: 'and' | 'or';
37
+ }
38
+ export interface ThrowErrorOptions {
39
+ code?: number;
40
+ errorType: APIError;
41
+ message: string;
42
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=base.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.interface.js","sourceRoot":"","sources":["../../src/base/base.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare class BaseModule {
2
+ }
@@ -0,0 +1,23 @@
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.BaseModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const action_log_1 = require("../action-log");
12
+ const base_service_1 = require("./base.service");
13
+ let BaseModule = class BaseModule {
14
+ };
15
+ exports.BaseModule = BaseModule;
16
+ exports.BaseModule = BaseModule = __decorate([
17
+ (0, common_1.Module)({
18
+ exports: [base_service_1.BaseService],
19
+ imports: [action_log_1.ActionLogModule],
20
+ providers: [base_service_1.BaseService]
21
+ })
22
+ ], BaseModule);
23
+ //# sourceMappingURL=base.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.module.js","sourceRoot":"","sources":["../../src/base/base.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAqC;AACrC,8CAA6C;AAC7C,iDAA0C;AAOnC,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IALtB,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE,CAAC,0BAAW,CAAC;QACtB,OAAO,EAAE,CAAC,4BAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,0BAAW,CAAC;KAC3B,CAAC;GACW,UAAU,CAAG"}
@@ -0,0 +1,29 @@
1
+ import { Repository } from 'typeorm';
2
+ import { ActionLogOptions, ActionLogService } from '../action-log';
3
+ import { AppEntity } from '../app.entity';
4
+ import { CreateOptions, DelOptions, FindOptions, PreValidateOptions, ThrowErrorOptions, UpdateLinkOptions, UpdateOptions } from './base.interface';
5
+ export declare class BaseService {
6
+ private readonly actionLogService;
7
+ constructor(actionLogService: ActionLogService);
8
+ create<T extends AppEntity>({ enableLogging, entityManager, entityOptions, headers, preValidateOptions, serviceName }: CreateOptions<T>): (repository: Repository<T>) => Promise<T>;
9
+ del<T extends AppEntity>({ entityManager, findOptions, serviceName, headers, enableLogging }: DelOptions<T>): (repository: Repository<T>) => Promise<void>;
10
+ update<T extends AppEntity>({ enableLogging, entityManager, entityOptions, findOptions, headers, preValidateOptions, serviceName }: UpdateOptions<T>): Promise<(repository: Repository<T>) => Promise<T>>;
11
+ find<T extends AppEntity>({ findOptions, findManyOptions }: FindOptions<T>): (repository: Repository<T>) => Promise<{
12
+ results: T[];
13
+ limit: number;
14
+ offset: number;
15
+ total: number;
16
+ }>;
17
+ findOne<T extends AppEntity>({ serviceName, findOptions, actionLogOptions }: {
18
+ serviceName: any;
19
+ findOptions: any;
20
+ actionLogOptions: any;
21
+ }): (repository: Repository<T>) => Promise<T>;
22
+ updateLink<T extends AppEntity>({ enableLogging, entityIds, entityManager, findOptions, headers, linkKey, serviceName }: UpdateLinkOptions<T>): Promise<(repository: Repository<T>) => Promise<T[]>>;
23
+ preValidate<T extends AppEntity>({ actionLogOptions, findOptions, serviceName, validateKeys, validateMethod }: PreValidateOptions<T>): (repository: Repository<T>) => Promise<void>;
24
+ checkProhibited<T extends AppEntity>(actionLogOptions?: ActionLogOptions): (entity: T & {
25
+ protected?: boolean;
26
+ }) => Promise<void>;
27
+ actionLogSuccess<T extends AppEntity>(actionLogOptions: ActionLogOptions): (entity: T | T[]) => Promise<void>;
28
+ throwError({ errorType, ...args }: ThrowErrorOptions): (actionLogOptions: ActionLogOptions) => Promise<void>;
29
+ }