@neohm/nestend 3.2.0 → 3.3.0

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 (49) hide show
  1. package/README.md +20 -7
  2. package/dist/admin/controllers/admin.api.key.controller.d.ts.map +1 -1
  3. package/dist/admin/controllers/admin.api.key.controller.js +5 -3
  4. package/dist/admin/controllers/admin.api.key.controller.js.map +1 -1
  5. package/dist/admin/controllers/system.role.controller.d.ts +24 -0
  6. package/dist/admin/controllers/system.role.controller.d.ts.map +1 -0
  7. package/dist/admin/controllers/system.role.controller.js +106 -0
  8. package/dist/admin/controllers/system.role.controller.js.map +1 -0
  9. package/dist/admin/dtos/add.system.role.dto.d.ts +8 -0
  10. package/dist/admin/dtos/add.system.role.dto.d.ts.map +1 -0
  11. package/dist/admin/dtos/add.system.role.dto.js +56 -0
  12. package/dist/admin/dtos/add.system.role.dto.js.map +1 -0
  13. package/dist/admin/es6.classes.d.ts +4 -2
  14. package/dist/admin/es6.classes.d.ts.map +1 -1
  15. package/dist/admin/es6.classes.js +6 -0
  16. package/dist/admin/es6.classes.js.map +1 -1
  17. package/dist/admin/libraries/system.role.data.processor.d.ts +10 -0
  18. package/dist/admin/libraries/system.role.data.processor.d.ts.map +1 -0
  19. package/dist/admin/libraries/system.role.data.processor.js +41 -0
  20. package/dist/admin/libraries/system.role.data.processor.js.map +1 -0
  21. package/dist/admin/services/admin.access.service.d.ts +2 -0
  22. package/dist/admin/services/admin.access.service.d.ts.map +1 -1
  23. package/dist/admin/services/admin.access.service.js +3 -0
  24. package/dist/admin/services/admin.access.service.js.map +1 -1
  25. package/dist/auth/auth.module.d.ts.map +1 -1
  26. package/dist/auth/auth.module.js +10 -3
  27. package/dist/auth/auth.module.js.map +1 -1
  28. package/dist/auth/entities/api.key.entity.d.ts +1 -0
  29. package/dist/auth/entities/api.key.entity.d.ts.map +1 -1
  30. package/dist/auth/entities/api.key.entity.js +4 -0
  31. package/dist/auth/entities/api.key.entity.js.map +1 -1
  32. package/dist/auth/es6.classes.d.ts +2 -1
  33. package/dist/auth/es6.classes.d.ts.map +1 -1
  34. package/dist/auth/es6.classes.js +2 -0
  35. package/dist/auth/es6.classes.js.map +1 -1
  36. package/dist/auth/services/api.key.service.d.ts +5 -2
  37. package/dist/auth/services/api.key.service.d.ts.map +1 -1
  38. package/dist/auth/services/api.key.service.js +30 -7
  39. package/dist/auth/services/api.key.service.js.map +1 -1
  40. package/dist/auth/services/role.service.d.ts +9 -0
  41. package/dist/auth/services/role.service.d.ts.map +1 -0
  42. package/dist/auth/services/role.service.js +40 -0
  43. package/dist/auth/services/role.service.js.map +1 -0
  44. package/dist/auth/types/api.key.types.d.ts +1 -0
  45. package/dist/auth/types/api.key.types.d.ts.map +1 -1
  46. package/dist/migrations/1749600000017.CreateSysApiKeysTable.d.ts.map +1 -1
  47. package/dist/migrations/1749600000017.CreateSysApiKeysTable.js +1 -0
  48. package/dist/migrations/1749600000017.CreateSysApiKeysTable.js.map +1 -1
  49. package/package.json +1 -1
package/README.md CHANGED
@@ -273,7 +273,7 @@ admin with the `admin` role can grant `sys_admin_roles` to other admins via
273
273
 
274
274
  | Variable | Default | Description |
275
275
  | ------------------- | ------- | ------------------------------------------------------------------------------------- |
276
- | `ENCRYPTION_SECRET` | — | **Required** when `EncryptionService` is used. AES-256-GCM key material. Min 32 chars |
276
+ | `ENCRYPTION_SECRET` | — | **Required** when `EncryptionService` is used — which now includes issuing API keys (`key_encrypted`). AES-256-GCM key material. Min 32 chars |
277
277
 
278
278
  ### Cache (Redis)
279
279
 
@@ -565,9 +565,21 @@ a subscriber only starts firing once something constructs it.
565
565
 
566
566
  ### API Keys
567
567
 
568
- | Variable | Default | Description |
569
- | --------------------- | ----------- | ----------------------------------- |
570
- | `API_KEY_HEADER_NAME` | `x-api-key` | Request header carrying the API key |
568
+ | Variable | Default | Description |
569
+ | --------------------- | ----------- | ---------------------------------------------------------------- |
570
+ | `API_KEY_HEADER_NAME` | `x-api-key` | Request header carrying the API key |
571
+ | `ENCRYPTION_SECRET` | — | **Required to issue keys** — `key_encrypted` is AES-256-GCM |
572
+
573
+ A key is stored three ways: its sha256 hash in `key_hash` (what lookups match), a
574
+ short visible prefix in `key_prefix`, and the key itself encrypted in
575
+ `key_encrypted`. That last one makes a key recoverable after issuing, so a lost key
576
+ does not force a reissue and a redeploy — `revealApiKey(uuid)` returns it, and
577
+ `apiKeyDetail(uuid, reveal)` folds it into the detail as `key`. The column is
578
+ `select: false` like `UserEntity.password`, so the ciphertext never rides along on a
579
+ read. Note what it costs: a key is no longer irrecoverable by construction, so treat
580
+ reaching either method as equivalent to holding the key — which is why
581
+ `GET /admin/api-keys/:id` reveals it from the global admin role up and not to a
582
+ content reader.
571
583
 
572
584
  A key belongs to one tenant and holds its scopes as `sys_api_scopes` rows against
573
585
  the `sys_scopes` catalogue — there is no scopes array on the key, and a key grants
@@ -810,7 +822,7 @@ pass the actor to a processor.
810
822
  | `POST /admin/scopes/:id/delete` | content manager | `ScopeService.deleteScope` (cascades to every grant) |
811
823
  | `POST /admin/api-keys` | admin | `ApiKeyDataProcessor` — returns `{ raw_key, api_key }` |
812
824
  | `POST /admin/api-keys/list` | content reader | `ApiKeyListProcessor` |
813
- | `GET /admin/api-keys/:id` | content reader | `ApiKeyService.apiKeyDetail` — the row plus its `scopes` |
825
+ | `GET /admin/api-keys/:id` | content reader | the row, its `scopes`, and `key` from admin up |
814
826
  | `POST /admin/api-keys/:id/disable` | admin | `ApiKeyService.disableApiKey` (reversible) |
815
827
  | `POST /admin/api-keys/:id/delete` | admin | `ApiKeyService.deleteApiKey` (soft, and revokes) |
816
828
 
@@ -825,8 +837,9 @@ tenant's whole scope set — `setScopes()` grants what is new and soft-removes w
825
837
  gone, so an omitted list revokes them all (a picker has no other way to clear its
826
838
  last selection); every other optional field on that DTO still keeps its stored value.
827
839
  An API key can only be granted scopes its tenant already holds, so a key never
828
- out-ranks the organization it acts for. `raw_key` appears in the issue response and
829
- nowhere else.
840
+ out-ranks the organization it acts for. The key comes back in the issue response as
841
+ `raw_key`, and afterwards from `GET /admin/api-keys/:id` as `key` — for a global
842
+ admin only.
830
843
 
831
844
  Auth endpoints for admins themselves (`login`, `refresh`, `logout`, `me`) live
832
845
  at `/admin/auth` (`AdminAuthController`) — see
@@ -1 +1 @@
1
- {"version":3,"file":"admin.api.key.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.api.key.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,qBAGa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU;IASnC,KAAK,CAAS,GAAG,EAAE,YAAY;IAW/B,IAAI,CAAS,GAAG,EAAE,aAAa;;;;;;;IAW/B,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAWvC,OAAO,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAWxC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAI9C"}
1
+ {"version":3,"file":"admin.api.key.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.api.key.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,qBAGa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU;IASnC,KAAK,CAAS,GAAG,EAAE,YAAY;IAW/B,IAAI,CAAS,GAAG,EAAE,aAAa;;;;;;;IAW/B,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAgBvC,OAAO,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAWxC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAI9C"}
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
17
17
  const swagger_1 = require("@nestjs/swagger");
18
18
  const sql_service_1 = require("../../common/services/sql.service");
19
19
  const api_key_service_1 = require("../../auth/services/api.key.service");
20
+ const global_admin_roles_enum_1 = require("../../auth/enums/global.admin.roles.enum");
20
21
  const admin_access_service_1 = require("../services/admin.access.service");
21
22
  const common_params_dto_1 = require("../../common/dtos/common.params.dto");
22
23
  const api_key_data_processor_1 = require("../libraries/api.key.data.processor");
@@ -38,8 +39,9 @@ let AdminApiKeyController = class AdminApiKeyController {
38
39
  return new api_key_list_processor_1.ApiKeyListProcessor(this.sqlService).process(dto);
39
40
  }
40
41
  async detail({ id }) {
41
- await this.adminAccessService.validateContentReader();
42
- return this.apiKeyService.apiKeyDetail(id);
42
+ const access = await this.adminAccessService.validateContentReader();
43
+ const reveal = this.adminAccessService.holdsAtLeast(access, global_admin_roles_enum_1.GlobalAdminRoles.GLOBAL_ADMIN);
44
+ return this.apiKeyService.apiKeyDetail(id, reveal);
43
45
  }
44
46
  async disable({ id }) {
45
47
  const { user } = await this.adminAccessService.validateAdmin();
@@ -77,7 +79,7 @@ __decorate([
77
79
  (0, common_1.Get)(':id'),
78
80
  (0, swagger_1.ApiOperation)({
79
81
  summary: 'One API key, in full.',
80
- description: 'Carries the owning tenant and the `scopes` granted to the key. Never the key itself — only `key_prefix` survives generation. Requires at least the global content reader role.',
82
+ description: 'Carries the owning tenant and the `scopes` granted to the key. Requires at least the global content reader role — but `key`, the decrypted raw key, is only included from the global admin role up: it is a live credential, and reading a record is not the same permission as holding it. A key issued before keys were stored recoverably has no `key` at all.',
81
83
  }),
82
84
  __param(0, (0, common_1.Param)()),
83
85
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"admin.api.key.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.api.key.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.api.key.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.api.key.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { SqlService } from '../../common/services/sql.service';
2
+ import { AdminAccessService } from '../services/admin.access.service';
3
+ import { CommonParamsDto } from '../../common/dtos/common.params.dto';
4
+ import { RoleService } from '../../auth/services/role.service';
5
+ import { AddSystemRoleDto } from '../dtos/add.system.role.dto';
6
+ import { RoleListDto } from '../dtos/role.list.dto';
7
+ import { SystemRoleEntity } from '../../auth/entities/system.role.entity';
8
+ export declare class SystemRoleController {
9
+ private readonly adminAccessService;
10
+ private readonly roleService;
11
+ private readonly sqlService;
12
+ constructor(adminAccessService: AdminAccessService, roleService: RoleService, sqlService: SqlService);
13
+ save(dto: AddSystemRoleDto): Promise<SystemRoleEntity>;
14
+ list(dto: RoleListDto): Promise<{
15
+ records: import("../..").SqlRow[];
16
+ total: number;
17
+ page: number;
18
+ limit: number;
19
+ total_pages: number;
20
+ }>;
21
+ detail({ id }: CommonParamsDto): Promise<SystemRoleEntity>;
22
+ remove({ id }: CommonParamsDto): Promise<import("../..").DeleteResult>;
23
+ }
24
+ //# sourceMappingURL=system.role.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.role.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/system.role.controller.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAa1E,qBAGa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAFV,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU;IASnC,IAAI,CAAS,GAAG,EAAE,gBAAgB;IAUlC,IAAI,CAAS,GAAG,EAAE,WAAW;;;;;;;IAU7B,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAevC,MAAM,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;CAI9C"}
@@ -0,0 +1,106 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SystemRoleController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const sql_service_1 = require("../../common/services/sql.service");
19
+ const admin_access_service_1 = require("../services/admin.access.service");
20
+ const common_params_dto_1 = require("../../common/dtos/common.params.dto");
21
+ const role_service_1 = require("../../auth/services/role.service");
22
+ const system_role_data_processor_1 = require("../libraries/system.role.data.processor");
23
+ const role_list_processor_1 = require("../libraries/role.list.processor");
24
+ const add_system_role_dto_1 = require("../dtos/add.system.role.dto");
25
+ const role_list_dto_1 = require("../dtos/role.list.dto");
26
+ const system_role_entity_1 = require("../../auth/entities/system.role.entity");
27
+ let SystemRoleController = class SystemRoleController {
28
+ constructor(adminAccessService, roleService, sqlService) {
29
+ this.adminAccessService = adminAccessService;
30
+ this.roleService = roleService;
31
+ this.sqlService = sqlService;
32
+ }
33
+ async save(dto) {
34
+ await this.adminAccessService.validateContentManager();
35
+ return new system_role_data_processor_1.SystemRoleDataProcessor().process(dto);
36
+ }
37
+ async list(dto) {
38
+ await this.adminAccessService.validateContentReader();
39
+ return new role_list_processor_1.RoleListProcessor(this.sqlService).process(dto);
40
+ }
41
+ async detail({ id }) {
42
+ await this.adminAccessService.validateContentReader();
43
+ const role = await system_role_entity_1.SystemRoleEntity.findOne({ where: { id } });
44
+ if (!role)
45
+ throw new common_1.NotFoundException('No role exists for this id');
46
+ return role;
47
+ }
48
+ async remove({ id }) {
49
+ const { user } = await this.adminAccessService.validateContentManager();
50
+ return this.roleService.deleteRole(id, user.id);
51
+ }
52
+ };
53
+ exports.SystemRoleController = SystemRoleController;
54
+ __decorate([
55
+ (0, common_1.Post)(),
56
+ (0, swagger_1.ApiOperation)({
57
+ summary: 'Define a role, or update an existing one.',
58
+ description: 'Send an `id` to edit that role; omit it to define a new one. `identifier` is what application code checks and is unique across the catalogue. Requires at least the global content manager role.',
59
+ }),
60
+ __param(0, (0, common_1.Body)()),
61
+ __metadata("design:type", Function),
62
+ __metadata("design:paramtypes", [add_system_role_dto_1.AddSystemRoleDto]),
63
+ __metadata("design:returntype", Promise)
64
+ ], SystemRoleController.prototype, "save", null);
65
+ __decorate([
66
+ (0, common_1.Post)('list'),
67
+ (0, swagger_1.ApiOperation)({
68
+ summary: 'List, search and filter roles.',
69
+ description: 'Requires at least the global content reader role.',
70
+ }),
71
+ __param(0, (0, common_1.Body)()),
72
+ __metadata("design:type", Function),
73
+ __metadata("design:paramtypes", [role_list_dto_1.RoleListDto]),
74
+ __metadata("design:returntype", Promise)
75
+ ], SystemRoleController.prototype, "list", null);
76
+ __decorate([
77
+ (0, common_1.Get)(':id'),
78
+ (0, swagger_1.ApiOperation)({
79
+ summary: 'One role, in full.',
80
+ description: 'Requires at least the global content reader role.',
81
+ }),
82
+ __param(0, (0, common_1.Param)()),
83
+ __metadata("design:type", Function),
84
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
85
+ __metadata("design:returntype", Promise)
86
+ ], SystemRoleController.prototype, "detail", null);
87
+ __decorate([
88
+ (0, common_1.Post)(':id/delete'),
89
+ (0, swagger_1.ApiOperation)({
90
+ summary: 'Delete a role.',
91
+ description: 'Soft delete: the row keeps its data with `deleted_at` set and drops out of every listing. Every grant of it in `sys_user_roles` goes too, so no user keeps a role the catalogue no longer defines. Requires at least the global content manager role.',
92
+ }),
93
+ __param(0, (0, common_1.Param)()),
94
+ __metadata("design:type", Function),
95
+ __metadata("design:paramtypes", [common_params_dto_1.CommonParamsDto]),
96
+ __metadata("design:returntype", Promise)
97
+ ], SystemRoleController.prototype, "remove", null);
98
+ exports.SystemRoleController = SystemRoleController = __decorate([
99
+ (0, swagger_1.ApiTags)('Admin - System Roles'),
100
+ (0, swagger_1.ApiBearerAuth)(),
101
+ (0, common_1.Controller)('api/admin/system-roles'),
102
+ __metadata("design:paramtypes", [admin_access_service_1.AdminAccessService,
103
+ role_service_1.RoleService,
104
+ sql_service_1.SqlService])
105
+ ], SystemRoleController);
106
+ //# sourceMappingURL=system.role.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.role.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/system.role.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,6CAAuE;AACvE,mEAA+D;AAC/D,2EAAsE;AACtE,2EAAsE;AACtE,mEAA+D;AAC/D,wFAAkF;AAClF,0EAAqE;AACrE,qEAA+D;AAC/D,yDAAoD;AACpD,+EAA0E;AAgBnE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YACmB,kBAAsC,EACtC,WAAwB,EACxB,UAAsB;QAFtB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAQE,AAAN,KAAK,CAAC,IAAI,CAAS,GAAqB;QACtC,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QACvD,OAAO,IAAI,oDAAuB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAOK,AAAN,KAAK,CAAC,IAAI,CAAS,GAAgB;QACjC,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO,IAAI,uCAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IAOK,AAAN,KAAK,CAAC,MAAM,CAAU,EAAE,EAAE,EAAmB;QAC3C,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAEtD,MAAM,IAAI,GAAG,MAAM,qCAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,0BAAiB,CAAC,4BAA4B,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC;IACd,CAAC;IAQK,AAAN,KAAK,CAAC,MAAM,CAAU,EAAE,EAAE,EAAmB;QAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AApDY,oDAAoB;AAazB;IANL,IAAA,aAAI,GAAE;IACN,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,2CAA2C;QACpD,WAAW,EACT,kMAAkM;KACrM,CAAC;IACU,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,sCAAgB;;gDAGvC;AAOK;IALL,IAAA,aAAI,EAAC,MAAM,CAAC;IACZ,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,mDAAmD;KACjE,CAAC;IACU,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,2BAAW;;gDAGlC;AAOK;IALL,IAAA,YAAG,EAAC,KAAK,CAAC;IACV,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EAAE,mDAAmD;KACjE,CAAC;IACY,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAS,mCAAe;;kDAO5C;AAQK;IANL,IAAA,aAAI,EAAC,YAAY,CAAC;IAClB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,gBAAgB;QACzB,WAAW,EACT,uPAAuP;KAC1P,CAAC;IACY,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAS,mCAAe;;kDAG5C;+BAnDU,oBAAoB;IAHhC,IAAA,iBAAO,EAAC,sBAAsB,CAAC;IAC/B,IAAA,uBAAa,GAAE;IACf,IAAA,mBAAU,EAAC,wBAAwB,CAAC;qCAGI,yCAAkB;QACzB,0BAAW;QACZ,wBAAU;GAJ9B,oBAAoB,CAoDhC"}
@@ -0,0 +1,8 @@
1
+ import { CommonPayloadDto } from '../../common/dtos/common.payload.dto';
2
+ export declare class AddSystemRoleDto extends CommonPayloadDto {
3
+ identifier: string;
4
+ name: string;
5
+ description?: string;
6
+ is_active?: boolean;
7
+ }
8
+ //# sourceMappingURL=add.system.role.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.system.role.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/add.system.role.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAOxE,qBAAa,gBAAiB,SAAQ,gBAAgB;IAapD,UAAU,EAAE,MAAM,CAAC;IAMnB,IAAI,EAAE,MAAM,CAAC;IAOb,WAAW,CAAC,EAAE,MAAM,CAAC;IASrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -0,0 +1,56 @@
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.AddSystemRoleDto = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ const common_payload_dto_1 = require("../../common/dtos/common.payload.dto");
16
+ class AddSystemRoleDto extends common_payload_dto_1.CommonPayloadDto {
17
+ }
18
+ exports.AddSystemRoleDto = AddSystemRoleDto;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({
21
+ example: 'org.owner',
22
+ description: 'Machine-readable key application code checks (lowercase letters, digits, dots, colons, hyphens, underscores).',
23
+ }),
24
+ (0, class_validator_1.IsString)(),
25
+ (0, class_validator_1.IsNotEmpty)(),
26
+ (0, class_validator_1.MaxLength)(100),
27
+ (0, class_validator_1.Matches)(/^[a-z0-9._:-]+$/, {
28
+ message: 'identifier may only contain lowercase letters, digits, dots, colons, hyphens and underscores',
29
+ }),
30
+ __metadata("design:type", String)
31
+ ], AddSystemRoleDto.prototype, "identifier", void 0);
32
+ __decorate([
33
+ (0, swagger_1.ApiProperty)({ example: 'Organization Owner' }),
34
+ (0, class_validator_1.IsString)(),
35
+ (0, class_validator_1.IsNotEmpty)(),
36
+ (0, class_validator_1.MaxLength)(150),
37
+ __metadata("design:type", String)
38
+ ], AddSystemRoleDto.prototype, "name", void 0);
39
+ __decorate([
40
+ (0, swagger_1.ApiPropertyOptional)({
41
+ example: 'Full control of the organization, including billing.',
42
+ }),
43
+ (0, class_validator_1.IsOptional)(),
44
+ (0, class_validator_1.IsString)(),
45
+ __metadata("design:type", String)
46
+ ], AddSystemRoleDto.prototype, "description", void 0);
47
+ __decorate([
48
+ (0, swagger_1.ApiPropertyOptional)({
49
+ default: true,
50
+ description: 'Inactive roles stay assigned and keep their history; they are just not offered in the pickers.',
51
+ }),
52
+ (0, class_validator_1.IsOptional)(),
53
+ (0, class_validator_1.IsBoolean)(),
54
+ __metadata("design:type", Boolean)
55
+ ], AddSystemRoleDto.prototype, "is_active", void 0);
56
+ //# sourceMappingURL=add.system.role.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.system.role.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/add.system.role.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAmE;AACnE,6EAAwE;AAOxE,MAAa,gBAAiB,SAAQ,qCAAgB;CAoCrD;AApCD,4CAoCC;AAvBC;IAZC,IAAA,qBAAW,EAAC;QACX,OAAO,EAAE,WAAW;QACpB,WAAW,EACT,+GAA+G;KAClH,CAAC;IACD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;IACd,IAAA,yBAAO,EAAC,iBAAiB,EAAE;QAC1B,OAAO,EACL,8FAA8F;KACjG,CAAC;;oDACiB;AAMnB;IAJC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC9C,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,GAAG,CAAC;;8CACF;AAOb;IALC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,sDAAsD;KAChE,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qDACU;AASrB;IAPC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,IAAI;QACb,WAAW,EACT,gGAAgG;KACnG,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;mDACQ"}
@@ -5,6 +5,7 @@ import { AdminScopeController } from './controllers/admin.scope.controller';
5
5
  import { AdminTenantController } from './controllers/admin.tenant.controller';
6
6
  import { AdminTenantUserController } from './controllers/admin.tenant.user.controller';
7
7
  import { AdminUserController } from './controllers/admin.user.controller';
8
+ import { SystemRoleController } from './controllers/system.role.controller';
8
9
  import { AdminAccessService } from './services/admin.access.service';
9
10
  import { AdminUserDataProcessor } from './libraries/admin.user.data.processor';
10
11
  import { AdminUserDeleteProcessor } from './libraries/admin.user.delete.processor';
@@ -21,6 +22,7 @@ import { ScheduledTaskDeleteProcessor } from './libraries/scheduled.task.delete.
21
22
  import { ScheduledTaskListProcessor } from './libraries/scheduled.task.list.processor';
22
23
  import { ScopeDataProcessor } from './libraries/scope.data.processor';
23
24
  import { ScopeListProcessor } from './libraries/scope.list.processor';
25
+ import { SystemRoleDataProcessor } from './libraries/system.role.data.processor';
24
26
  import { TenantDataProcessor } from './libraries/tenant.data.processor';
25
27
  import { TenantDeleteProcessor } from './libraries/tenant.delete.processor';
26
28
  import { TenantListProcessor } from './libraries/tenant.list.processor';
@@ -32,9 +34,9 @@ import { AddTenantDto } from './dtos/add.tenant.dto';
32
34
  import { ApiKeyListDto } from './dtos/api.key.list.dto';
33
35
  import { BaseUserDto } from './dtos/base.user.dto';
34
36
  export declare const es6Classes: {
35
- controllers: (typeof AdminApiKeyController | typeof AdminRoleController | typeof AdminScheduledTaskController | typeof AdminScopeController | typeof AdminTenantController | typeof AdminTenantUserController | typeof AdminUserController)[];
37
+ controllers: (typeof AdminApiKeyController | typeof AdminRoleController | typeof AdminScheduledTaskController | typeof AdminScopeController | typeof AdminTenantController | typeof AdminTenantUserController | typeof AdminUserController | typeof SystemRoleController)[];
36
38
  services: readonly [typeof AdminAccessService];
37
- libraries: (typeof ApiKeyDataProcessor | typeof ApiKeyListProcessor | typeof RoleListProcessor | typeof AdminRoleListProcessor | typeof ScheduledTaskDataProcessor | typeof ScheduledTaskDeleteProcessor | typeof ScheduledTaskListProcessor | typeof ScopeDataProcessor | typeof ScopeListProcessor | typeof TenantDataProcessor | typeof TenantDeleteProcessor | typeof TenantListProcessor | typeof BulkUserDataProcessor | typeof ClientUserDataProcessor | typeof ClientUserDeleteProcessor | typeof ClientUserListProcessor | typeof AdminUserDataProcessor | typeof AdminUserDeleteProcessor | typeof AdminUserListProcessor)[];
39
+ libraries: (typeof ApiKeyDataProcessor | typeof ApiKeyListProcessor | typeof RoleListProcessor | typeof AdminRoleListProcessor | typeof ScheduledTaskDataProcessor | typeof ScheduledTaskDeleteProcessor | typeof ScheduledTaskListProcessor | typeof ScopeDataProcessor | typeof ScopeListProcessor | typeof TenantDataProcessor | typeof TenantDeleteProcessor | typeof TenantListProcessor | typeof BulkUserDataProcessor | typeof ClientUserDataProcessor | typeof ClientUserDeleteProcessor | typeof ClientUserListProcessor | typeof AdminUserDataProcessor | typeof AdminUserDeleteProcessor | typeof AdminUserListProcessor | typeof SystemRoleDataProcessor)[];
38
40
  dtos: (typeof AddApiKeyDto | typeof ApiKeyListDto | typeof ScheduleDto | typeof AddScopeDto | typeof AddTenantDto | typeof BaseUserDto | typeof AddAdminUserDto)[];
39
41
  jobs: any[];
40
42
  subscribers: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD,eAAO,MAAM,UAAU;;;;;;;CAmDtB,CAAC"}
1
+ {"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAC7F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMnD,eAAO,MAAM,UAAU;;;;;;;CAsDtB,CAAC"}
@@ -8,6 +8,7 @@ const admin_scope_controller_1 = require("./controllers/admin.scope.controller")
8
8
  const admin_tenant_controller_1 = require("./controllers/admin.tenant.controller");
9
9
  const admin_tenant_user_controller_1 = require("./controllers/admin.tenant.user.controller");
10
10
  const admin_user_controller_1 = require("./controllers/admin.user.controller");
11
+ const system_role_controller_1 = require("./controllers/system.role.controller");
11
12
  const admin_access_service_1 = require("./services/admin.access.service");
12
13
  const admin_user_data_processor_1 = require("./libraries/admin.user.data.processor");
13
14
  const admin_user_delete_processor_1 = require("./libraries/admin.user.delete.processor");
@@ -24,6 +25,7 @@ const scheduled_task_delete_processor_1 = require("./libraries/scheduled.task.de
24
25
  const scheduled_task_list_processor_1 = require("./libraries/scheduled.task.list.processor");
25
26
  const scope_data_processor_1 = require("./libraries/scope.data.processor");
26
27
  const scope_list_processor_1 = require("./libraries/scope.list.processor");
28
+ const system_role_data_processor_1 = require("./libraries/system.role.data.processor");
27
29
  const tenant_data_processor_1 = require("./libraries/tenant.data.processor");
28
30
  const tenant_delete_processor_1 = require("./libraries/tenant.delete.processor");
29
31
  const tenant_list_processor_1 = require("./libraries/tenant.list.processor");
@@ -33,6 +35,7 @@ const add_bulk_users_dto_1 = require("./dtos/add.bulk.users.dto");
33
35
  const add_client_user_dto_1 = require("./dtos/add.client.user.dto");
34
36
  const add_scheduled_task_dto_1 = require("./dtos/add.scheduled.task.dto");
35
37
  const add_scope_dto_1 = require("./dtos/add.scope.dto");
38
+ const add_system_role_dto_1 = require("./dtos/add.system.role.dto");
36
39
  const add_tenant_dto_1 = require("./dtos/add.tenant.dto");
37
40
  const admin_user_list_dto_1 = require("./dtos/admin.user.list.dto");
38
41
  const api_key_list_dto_1 = require("./dtos/api.key.list.dto");
@@ -51,6 +54,7 @@ exports.es6Classes = {
51
54
  admin_tenant_controller_1.AdminTenantController,
52
55
  admin_user_controller_1.AdminUserController,
53
56
  admin_tenant_user_controller_1.AdminTenantUserController,
57
+ system_role_controller_1.SystemRoleController,
54
58
  ],
55
59
  services: [admin_access_service_1.AdminAccessService],
56
60
  libraries: [
@@ -70,6 +74,7 @@ exports.es6Classes = {
70
74
  scheduled_task_list_processor_1.ScheduledTaskListProcessor,
71
75
  scope_data_processor_1.ScopeDataProcessor,
72
76
  scope_list_processor_1.ScopeListProcessor,
77
+ system_role_data_processor_1.SystemRoleDataProcessor,
73
78
  tenant_data_processor_1.TenantDataProcessor,
74
79
  tenant_delete_processor_1.TenantDeleteProcessor,
75
80
  tenant_list_processor_1.TenantListProcessor,
@@ -81,6 +86,7 @@ exports.es6Classes = {
81
86
  add_client_user_dto_1.AddClientUserDto,
82
87
  add_scheduled_task_dto_1.ScheduleDto,
83
88
  add_scope_dto_1.AddScopeDto,
89
+ add_system_role_dto_1.AddSystemRoleDto,
84
90
  add_tenant_dto_1.AddTenantDto,
85
91
  admin_user_list_dto_1.AdminUserListDto,
86
92
  api_key_list_dto_1.ApiKeyListDto,
@@ -1 +1 @@
1
- {"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAC/E,+EAA0E;AAC1E,mGAA6F;AAC7F,iFAA4E;AAC5E,mFAA8E;AAC9E,6FAAuF;AACvF,+EAA0E;AAC1E,0EAAqE;AACrE,qFAA+E;AAC/E,yFAAmF;AACnF,qFAA+E;AAC/E,+EAAyE;AACzE,+EAAyE;AACzE,mFAA6E;AAC7E,uFAAiF;AACjF,2FAAqF;AACrF,uFAAiF;AACjF,yEAGyC;AACzC,6FAAuF;AACvF,iGAA2F;AAC3F,6FAAuF;AACvF,2EAAsE;AACtE,2EAAsE;AACtE,6EAAwE;AACxE,iFAA4E;AAC5E,6EAAwE;AACxE,kEAA4D;AAC5D,4DAAsD;AACtD,kEAA4D;AAC5D,oEAA8D;AAC9D,0EAA4D;AAC5D,wDAAmD;AACnD,0DAAqD;AACrD,oEAA8D;AAC9D,8DAAwD;AACxD,sEAAgE;AAChE,wDAAmD;AACnD,wDAAmD;AACnD,4EAAsE;AACtE,0DAAqD;AACrD,4DAAuD;AAE1C,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE;QACX,gDAAqB;QACrB,2CAAmB;QACnB,8DAA4B;QAC5B,6CAAoB;QACpB,+CAAqB;QACrB,2CAAmB;QACnB,wDAAyB;KAC1B;IACD,QAAQ,EAAE,CAAC,yCAAkB,CAAU;IACvC,SAAS,EAAE;QACT,kDAAsB;QACtB,sDAAwB;QACxB,kDAAsB;QACtB,4CAAsB;QACtB,4CAAmB;QACnB,4CAAmB;QACnB,gDAAqB;QACrB,oDAAuB;QACvB,wDAAyB;QACzB,oDAAuB;QACvB,uCAAiB;QACjB,0DAA0B;QAC1B,8DAA4B;QAC5B,0DAA0B;QAC1B,yCAAkB;QAClB,yCAAkB;QAClB,2CAAmB;QACnB,+CAAqB;QACrB,2CAAmB;KACpB;IACD,IAAI,EAAE;QACJ,oCAAe;QACf,8BAAY;QACZ,oCAAe;QACf,sCAAgB;QAChB,oCAAW;QACX,2BAAW;QACX,6BAAY;QACZ,sCAAgB;QAChB,gCAAa;QACb,2BAAW;QACX,wCAAiB;QACjB,2BAAW;QACX,8CAAoB;QACpB,6BAAY;QACZ,+BAAa;KACd;IACD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;CAChB,CAAC"}
1
+ {"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/admin/es6.classes.ts"],"names":[],"mappings":";;;AAAA,qFAA+E;AAC/E,+EAA0E;AAC1E,mGAA6F;AAC7F,iFAA4E;AAC5E,mFAA8E;AAC9E,6FAAuF;AACvF,+EAA0E;AAC1E,iFAA4E;AAC5E,0EAAqE;AACrE,qFAA+E;AAC/E,yFAAmF;AACnF,qFAA+E;AAC/E,+EAAyE;AACzE,+EAAyE;AACzE,mFAA6E;AAC7E,uFAAiF;AACjF,2FAAqF;AACrF,uFAAiF;AACjF,yEAGyC;AACzC,6FAAuF;AACvF,iGAA2F;AAC3F,6FAAuF;AACvF,2EAAsE;AACtE,2EAAsE;AACtE,uFAAiF;AACjF,6EAAwE;AACxE,iFAA4E;AAC5E,6EAAwE;AACxE,kEAA4D;AAC5D,4DAAsD;AACtD,kEAA4D;AAC5D,oEAA8D;AAC9D,0EAA4D;AAC5D,wDAAmD;AACnD,oEAA8D;AAC9D,0DAAqD;AACrD,oEAA8D;AAC9D,8DAAwD;AACxD,sEAAgE;AAChE,wDAAmD;AACnD,wDAAmD;AACnD,4EAAsE;AACtE,0DAAqD;AACrD,4DAAuD;AAE1C,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE;QACX,gDAAqB;QACrB,2CAAmB;QACnB,8DAA4B;QAC5B,6CAAoB;QACpB,+CAAqB;QACrB,2CAAmB;QACnB,wDAAyB;QACzB,6CAAoB;KACrB;IACD,QAAQ,EAAE,CAAC,yCAAkB,CAAU;IACvC,SAAS,EAAE;QACT,kDAAsB;QACtB,sDAAwB;QACxB,kDAAsB;QACtB,4CAAsB;QACtB,4CAAmB;QACnB,4CAAmB;QACnB,gDAAqB;QACrB,oDAAuB;QACvB,wDAAyB;QACzB,oDAAuB;QACvB,uCAAiB;QACjB,0DAA0B;QAC1B,8DAA4B;QAC5B,0DAA0B;QAC1B,yCAAkB;QAClB,yCAAkB;QAClB,oDAAuB;QACvB,2CAAmB;QACnB,+CAAqB;QACrB,2CAAmB;KACpB;IACD,IAAI,EAAE;QACJ,oCAAe;QACf,8BAAY;QACZ,oCAAe;QACf,sCAAgB;QAChB,oCAAW;QACX,2BAAW;QACX,sCAAgB;QAChB,6BAAY;QACZ,sCAAgB;QAChB,gCAAa;QACb,2BAAW;QACX,wCAAiB;QACjB,2BAAW;QACX,8CAAoB;QACpB,6BAAY;QACZ,+BAAa;KACd;IACD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;CAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { CommonDataProcessor } from '../../common/libraries/common.data.processor';
2
+ import { SystemRoleEntity } from '../../auth/entities/system.role.entity';
3
+ import { AddSystemRoleDto } from '../dtos/add.system.role.dto';
4
+ export declare class SystemRoleDataProcessor extends CommonDataProcessor {
5
+ protected payload: AddSystemRoleDto;
6
+ process(payload: AddSystemRoleDto): Promise<SystemRoleEntity>;
7
+ private validate;
8
+ private set;
9
+ }
10
+ //# sourceMappingURL=system.role.data.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.role.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/system.role.data.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAU/D,qBAAa,uBAAwB,SAAQ,mBAAmB;IAC9D,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAE9B,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAMrD,QAAQ;YAoBR,GAAG;CAoBlB"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemRoleDataProcessor = void 0;
4
+ const common_data_processor_1 = require("../../common/libraries/common.data.processor");
5
+ const system_role_entity_1 = require("../../auth/entities/system.role.entity");
6
+ class SystemRoleDataProcessor extends common_data_processor_1.CommonDataProcessor {
7
+ async process(payload) {
8
+ this.payload = payload;
9
+ await this.validate();
10
+ return this.set();
11
+ }
12
+ async validate() {
13
+ const body = this.payload;
14
+ if (body.id && !(await system_role_entity_1.SystemRoleEntity.existsBy({ id: body.id })))
15
+ this.setColumnError('id', 'No role exists for this id');
16
+ const owner = await system_role_entity_1.SystemRoleEntity.findOne({
17
+ where: { identifier: body.identifier },
18
+ });
19
+ if (owner && owner.id !== body.id)
20
+ this.setColumnError('identifier', 'A role with this identifier already exists');
21
+ this.throwExceptionOnError();
22
+ }
23
+ async set() {
24
+ const body = this.payload;
25
+ let role = system_role_entity_1.SystemRoleEntity.create();
26
+ if (body.id) {
27
+ const exists = await system_role_entity_1.SystemRoleEntity.findOne({ where: { id: body.id } });
28
+ if (exists)
29
+ role = exists;
30
+ }
31
+ role.identifier = body.identifier;
32
+ role.name = body.name;
33
+ role.description = body.description ?? '';
34
+ role.is_active = body.is_active ?? role.is_active ?? true;
35
+ role.attributes = role.attributes ?? {};
36
+ await role.save();
37
+ return role;
38
+ }
39
+ }
40
+ exports.SystemRoleDataProcessor = SystemRoleDataProcessor;
41
+ //# sourceMappingURL=system.role.data.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.role.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/system.role.data.processor.ts"],"names":[],"mappings":";;;AAAA,wFAAmF;AACnF,+EAA0E;AAW1E,MAAa,uBAAwB,SAAQ,2CAAmB;IAG9D,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAE1B,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,qCAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;QAI1D,MAAM,KAAK,GAAG,MAAM,qCAAgB,CAAC,OAAO,CAAC;YAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SACvC,CAAC,CAAC;QACH,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;YAC/B,IAAI,CAAC,cAAc,CACjB,YAAY,EACZ,4CAA4C,CAC7C,CAAC;QAEJ,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,GAAG;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,IAAI,GAAG,qCAAgB,CAAC,MAAM,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,qCAAgB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1E,IAAI,MAAM;gBAAE,IAAI,GAAG,MAAM,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAG1D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAExC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjDD,0DAiDC"}
@@ -1,5 +1,6 @@
1
1
  import { AdminAuthService } from '../../auth/services/admin.auth.service';
2
2
  import { AdminAuthenticatedAccess } from '../../auth/types/auth.types';
3
+ import { GlobalAdminRoles } from '../../auth/enums/global.admin.roles.enum';
3
4
  export declare class AdminAccessService {
4
5
  private readonly adminAuthService;
5
6
  constructor(adminAuthService: AdminAuthService);
@@ -7,6 +8,7 @@ export declare class AdminAccessService {
7
8
  validateAdmin(): Promise<AdminAuthenticatedAccess>;
8
9
  validateContentManager(): Promise<AdminAuthenticatedAccess>;
9
10
  validateContentReader(): Promise<AdminAuthenticatedAccess>;
11
+ holdsAtLeast(access: AdminAuthenticatedAccess, required: GlobalAdminRoles): boolean;
10
12
  private requireRole;
11
13
  private highestRank;
12
14
  private rankOf;
@@ -1 +1 @@
1
- {"version":3,"file":"admin.access.service.d.ts","sourceRoot":"","sources":["../../../src/admin/services/admin.access.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAkBvE,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAG/D,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAKvD,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAKlD,sBAAsB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAK3D,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,CAAC;YAI5C,WAAW;IAazB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,MAAM;CAKf"}
1
+ {"version":3,"file":"admin.access.service.d.ts","sourceRoot":"","sources":["../../../src/admin/services/admin.access.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAiB5E,qBACa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAG/D,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAKvD,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAKlD,sBAAsB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAK3D,qBAAqB,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAS1D,YAAY,CACV,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,gBAAgB,GACzB,OAAO;YAII,WAAW;IAazB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,MAAM;CAKf"}
@@ -30,6 +30,9 @@ let AdminAccessService = class AdminAccessService {
30
30
  validateContentReader() {
31
31
  return this.requireRole(global_admin_roles_enum_1.GlobalAdminRoles.GLOBAL_CONTENT_READER);
32
32
  }
33
+ holdsAtLeast(access, required) {
34
+ return this.highestRank(access) >= this.rankOf(required);
35
+ }
33
36
  async requireRole(required) {
34
37
  const access = await this.adminAuthService.validateRole();
35
38
  if (this.highestRank(access) < this.rankOf(required)) {
@@ -1 +1 @@
1
- {"version":3,"file":"admin.access.service.js","sourceRoot":"","sources":["../../../src/admin/services/admin.access.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+EAA0E;AAE1E,sFAA4E;AAC5E,+EAA2E;AAiBpE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAG,CAAC;IAGnE,kBAAkB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IAGD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC;IAGD,sBAAsB;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,sBAAsB,CAAC,CAAC;IACnE,CAAC;IAGD,qBAAqB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,qBAAqB,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,QAA0B;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,kCAAe,CACvB,sCAAsC,QAAQ,SAAS,CACxD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAGO,WAAW,CAAC,MAAgC;QAClD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,IAAI,GAAG,OAAO;gBAAE,OAAO,GAAG,IAAI,CAAC;QACrC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAOO,MAAM,CAAC,cAAsB;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,0CAAgB,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,cAAkC,CAAC,CAAC;QACpE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;IACrD,CAAC;CACF,CAAA;AAvDY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAEoC,qCAAgB;GADpD,kBAAkB,CAuD9B"}
1
+ {"version":3,"file":"admin.access.service.js","sourceRoot":"","sources":["../../../src/admin/services/admin.access.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,+EAA0E;AAE1E,sFAA4E;AAC5E,+EAA2E;AAiBpE,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC7B,YAA6B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;IAAG,CAAC;IAGnE,kBAAkB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC/D,CAAC;IAGD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC;IAGD,sBAAsB;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,sBAAsB,CAAC,CAAC;IACnE,CAAC;IAGD,qBAAqB;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,0CAAgB,CAAC,qBAAqB,CAAC,CAAC;IAClE,CAAC;IAOD,YAAY,CACV,MAAgC,EAChC,QAA0B;QAE1B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,QAA0B;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,kCAAe,CACvB,sCAAsC,QAAQ,SAAS,CACxD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAGO,WAAW,CAAC,MAAgC;QAClD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,IAAI,GAAG,OAAO;gBAAE,OAAO,GAAG,IAAI,CAAC;QACrC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAOO,MAAM,CAAC,cAAsB;QACnC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,0CAAgB,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,cAAkC,CAAC,CAAC;QACpE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;IACrD,CAAC;CACF,CAAA;AAnEY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAEoC,qCAAgB;GADpD,kBAAkB,CAmE9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAId,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA4F5D,qBAMa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa;CAShE"}
1
+ {"version":3,"file":"auth.module.d.ts","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAId,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAsG5D,qBAMa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa;CAShE"}
@@ -14,6 +14,7 @@ const passport_1 = require("@nestjs/passport");
14
14
  const typeorm_1 = require("@nestjs/typeorm");
15
15
  const common_module_1 = require("../common/common.module");
16
16
  const cache_service_1 = require("../common/services/cache.service");
17
+ const encryption_service_1 = require("../common/services/encryption.service");
17
18
  const api_key_guard_1 = require("./guards/api.key.guard");
18
19
  const jwt_auth_guard_1 = require("./guards/jwt.auth.guard");
19
20
  const jwt_refresh_guard_1 = require("./guards/jwt.refresh.guard");
@@ -23,7 +24,7 @@ const jwt_middleware_1 = require("./middlewares/jwt.middleware");
23
24
  const admin_jwt_middleware_1 = require("./middlewares/admin.jwt.middleware");
24
25
  const api_key_middleware_1 = require("./middlewares/api.key.middleware");
25
26
  const es6_classes_1 = require("./es6.classes");
26
- const [ApiKeyService, ScopeService, AuthService, AdminAuthService, GoogleAuthService,] = es6_classes_1.es6Classes.services;
27
+ const [ApiKeyService, ScopeService, AuthService, AdminAuthService, GoogleAuthService, RoleService,] = es6_classes_1.es6Classes.services;
27
28
  function createAuthImports() {
28
29
  return [
29
30
  common_module_1.CommonModule,
@@ -58,14 +59,19 @@ function createAuthProviders(options = {}) {
58
59
  },
59
60
  {
60
61
  provide: ApiKeyService,
61
- useFactory: (dataSource) => new ApiKeyService(dataSource),
62
- inject: [(0, typeorm_1.getDataSourceToken)(options.dataSourceName)],
62
+ useFactory: (dataSource, encryptionService) => new ApiKeyService(dataSource, encryptionService),
63
+ inject: [(0, typeorm_1.getDataSourceToken)(options.dataSourceName), encryption_service_1.EncryptionService],
63
64
  },
64
65
  {
65
66
  provide: ScopeService,
66
67
  useFactory: (dataSource) => new ScopeService(dataSource),
67
68
  inject: [(0, typeorm_1.getDataSourceToken)(options.dataSourceName)],
68
69
  },
70
+ {
71
+ provide: RoleService,
72
+ useFactory: (dataSource) => new RoleService(dataSource),
73
+ inject: [(0, typeorm_1.getDataSourceToken)(options.dataSourceName)],
74
+ },
69
75
  GoogleAuthService,
70
76
  jwt_strategy_1.JwtStrategy,
71
77
  jwt_refresh_strategy_1.JwtRefreshStrategy,
@@ -82,6 +88,7 @@ const authExports = [
82
88
  AdminAuthService,
83
89
  ApiKeyService,
84
90
  ScopeService,
91
+ RoleService,
85
92
  GoogleAuthService,
86
93
  jwt_auth_guard_1.JwtAuthGuard,
87
94
  jwt_refresh_guard_1.JwtRefreshGuard,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export declare class ApiKeyEntity extends CommonAdminEntity {
5
5
  name: string;
6
6
  key_prefix: string;
7
7
  key_hash: string;
8
+ key_encrypted: string;
8
9
  tenant_id: string;
9
10
  expires_at: Date;
10
11
  revoked_at: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.entity.d.ts","sourceRoot":"","sources":["../../../src/auth/entities/api.key.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,qBACa,YAAa,SAAQ,iBAAiB;IAEjD,SAAS,EAAE,OAAO,CAAC;IAGnB,IAAI,EAAE,MAAM,CAAC;IAIb,UAAU,EAAE,MAAM,CAAC;IAInB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,IAAI,CAAC;IAGjB,UAAU,EAAE,IAAI,CAAC;IAGjB,YAAY,EAAE,IAAI,CAAC;IAInB,MAAM,EAAE,YAAY,CAAC;CACtB"}
1
+ {"version":3,"file":"api.key.entity.d.ts","sourceRoot":"","sources":["../../../src/auth/entities/api.key.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,qBACa,YAAa,SAAQ,iBAAiB;IAEjD,SAAS,EAAE,OAAO,CAAC;IAGnB,IAAI,EAAE,MAAM,CAAC;IAIb,UAAU,EAAE,MAAM,CAAC;IAInB,QAAQ,EAAE,MAAM,CAAC;IAQjB,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,IAAI,CAAC;IAGjB,UAAU,EAAE,IAAI,CAAC;IAGjB,YAAY,EAAE,IAAI,CAAC;IAInB,MAAM,EAAE,YAAY,CAAC;CACtB"}
@@ -32,6 +32,10 @@ __decorate([
32
32
  (0, typeorm_1.Column)({ type: 'varchar' }),
33
33
  __metadata("design:type", String)
34
34
  ], ApiKeyEntity.prototype, "key_hash", void 0);
35
+ __decorate([
36
+ (0, typeorm_1.Column)({ type: 'text', select: false }),
37
+ __metadata("design:type", String)
38
+ ], ApiKeyEntity.prototype, "key_encrypted", void 0);
35
39
  __decorate([
36
40
  (0, typeorm_1.Column)({ type: 'uuid', nullable: true }),
37
41
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.entity.js","sourceRoot":"","sources":["../../../src/auth/entities/api.key.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAgE;AAChE,mFAA8E;AAC9E,uEAAmE;AAI5D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,uCAAiB;CA8BlD,CAAA;AA9BY,oCAAY;AAEvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;+CACxB;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;0CACf;AAIb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDACT;AAInB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CACX;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACvB;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BACpB,IAAI;gDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BACpB,IAAI;gDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BAClB,IAAI;kDAAC;AAInB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,4BAAY,CAAC;IAC7B,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BAC1B,4BAAY;4CAAC;uBA7BV,YAAY;IADxB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;GACpB,YAAY,CA8BxB"}
1
+ {"version":3,"file":"api.key.entity.js","sourceRoot":"","sources":["../../../src/auth/entities/api.key.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAgE;AAChE,mFAA8E;AAC9E,uEAAmE;AAI5D,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,uCAAiB;CAsClD,CAAA;AAtCY,oCAAY;AAEvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;+CACxB;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;0CACf;AAIb;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;gDACT;AAInB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;8CACX;AAQjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;;mDAClB;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACvB;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BACpB,IAAI;gDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BACpB,IAAI;gDAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BAClB,IAAI;kDAAC;AAInB;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,4BAAY,CAAC;IAC7B,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;8BAC1B,4BAAY;4CAAC;uBArCV,YAAY;IADxB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;GACpB,YAAY,CAsCxB"}
@@ -2,6 +2,7 @@ import { AuthController } from './controllers/auth.controller';
2
2
  import { AdminAuthController } from './controllers/admin.auth.controller';
3
3
  import { ApiKeyService } from './services/api.key.service';
4
4
  import { ScopeService } from './services/scope.service';
5
+ import { RoleService } from './services/role.service';
5
6
  import { AuthService } from './services/auth.service';
6
7
  import { AdminAuthService } from './services/admin.auth.service';
7
8
  import { GoogleAuthService } from './services/google.auth.service';
@@ -12,7 +13,7 @@ import { LoginDto } from './dtos/login.dto';
12
13
  import { RefreshTokenDto } from './dtos/refresh.token.dto';
13
14
  export declare const es6Classes: {
14
15
  controllers: (typeof AuthController | typeof AdminAuthController)[];
15
- services: readonly [typeof ApiKeyService, typeof ScopeService, typeof AuthService, typeof AdminAuthService, typeof GoogleAuthService];
16
+ services: readonly [typeof ApiKeyService, typeof ScopeService, typeof AuthService, typeof AdminAuthService, typeof GoogleAuthService, typeof RoleService];
16
17
  libraries: any[];
17
18
  dtos: (typeof LoginDto | typeof GoogleLoginDto | typeof RefreshTokenDto | typeof ChangePasswordDto | typeof AdminLoginDto)[];
18
19
  jobs: any[];
@@ -1 +1 @@
1
- {"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/auth/es6.classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,eAAO,MAAM,UAAU;;;;;;;CAoBtB,CAAC"}
1
+ {"version":3,"file":"es6.classes.d.ts","sourceRoot":"","sources":["../../src/auth/es6.classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,eAAO,MAAM,UAAU;;;;;;;CAqBtB,CAAC"}
@@ -5,6 +5,7 @@ const auth_controller_1 = require("./controllers/auth.controller");
5
5
  const admin_auth_controller_1 = require("./controllers/admin.auth.controller");
6
6
  const api_key_service_1 = require("./services/api.key.service");
7
7
  const scope_service_1 = require("./services/scope.service");
8
+ const role_service_1 = require("./services/role.service");
8
9
  const auth_service_1 = require("./services/auth.service");
9
10
  const admin_auth_service_1 = require("./services/admin.auth.service");
10
11
  const google_auth_service_1 = require("./services/google.auth.service");
@@ -22,6 +23,7 @@ exports.es6Classes = {
22
23
  auth_service_1.AuthService,
23
24
  admin_auth_service_1.AdminAuthService,
24
25
  google_auth_service_1.GoogleAuthService,
26
+ role_service_1.RoleService,
25
27
  ],
26
28
  libraries: [],
27
29
  dtos: [
@@ -1 +1 @@
1
- {"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/auth/es6.classes.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,+EAA0E;AAC1E,gEAA2D;AAC3D,4DAAwD;AACxD,0DAAsD;AACtD,sEAAiE;AACjE,wEAAmE;AACnE,4DAAuD;AACvD,oEAA+D;AAC/D,8DAAyD;AACzD,gDAA4C;AAC5C,gEAA2D;AAC3D,sDAAkD;AAErC,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE,CAAC,gCAAc,EAAE,2CAAmB,CAAC;IAClD,QAAQ,EAAE;QACR,+BAAa;QACb,4BAAY;QACZ,0BAAW;QACX,qCAAgB;QAChB,uCAAiB;KACT;IACV,SAAS,EAAE,EAAE;IACb,IAAI,EAAE;QACJ,+BAAa;QACb,uCAAiB;QACjB,iCAAc;QACd,oBAAQ;QACR,mCAAe;QACf,0BAAW;KACZ;IACD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;CAChB,CAAC"}
1
+ {"version":3,"file":"es6.classes.js","sourceRoot":"","sources":["../../src/auth/es6.classes.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAC/D,+EAA0E;AAC1E,gEAA2D;AAC3D,4DAAwD;AACxD,0DAAsD;AACtD,0DAAsD;AACtD,sEAAiE;AACjE,wEAAmE;AACnE,4DAAuD;AACvD,oEAA+D;AAC/D,8DAAyD;AACzD,gDAA4C;AAC5C,gEAA2D;AAC3D,sDAAkD;AAErC,QAAA,UAAU,GAAG;IACxB,WAAW,EAAE,CAAC,gCAAc,EAAE,2CAAmB,CAAC;IAClD,QAAQ,EAAE;QACR,+BAAa;QACb,4BAAY;QACZ,0BAAW;QACX,qCAAgB;QAChB,uCAAiB;QACjB,0BAAW;KACH;IACV,SAAS,EAAE,EAAE;IACb,IAAI,EAAE;QACJ,+BAAa;QACb,uCAAiB;QACjB,iCAAc;QACd,oBAAQ;QACR,mCAAe;QACf,0BAAW;KACZ;IACD,IAAI,EAAE,EAAE;IACR,WAAW,EAAE,EAAE;CAChB,CAAC"}
@@ -1,18 +1,21 @@
1
1
  import { Logger } from '@nestjs/common';
2
2
  import { DataSource } from 'typeorm';
3
3
  import { DeleteResult, DisableResult } from '../../common/types/common.response.types';
4
+ import { EncryptionService } from '../../common/services/encryption.service';
4
5
  import { ApiKeyEntity } from '../entities/api.key.entity';
5
6
  import { ApiScopeEntity } from '../entities/api.scope.entity';
6
7
  import { ApiKeyAccess, ApiKeyDetail, GenerateApiKeyOptions, GeneratedApiKey } from '../types/api.key.types';
7
8
  export declare class ApiKeyService {
8
9
  private readonly dataSource;
10
+ private readonly encryptionService;
9
11
  protected readonly logger: Logger;
10
- constructor(dataSource: DataSource);
12
+ constructor(dataSource: DataSource, encryptionService: EncryptionService);
11
13
  generateApiKey(name: string, options?: GenerateApiKeyOptions): Promise<GeneratedApiKey>;
14
+ revealApiKey(apiKeyUuid: string): Promise<string>;
12
15
  grantScopes(apiKeyUuid: string, scopeIds?: string[], grantedBy?: string): Promise<ApiScopeEntity[]>;
13
16
  validateApiKey(rawKey: string): Promise<ApiKeyEntity | null>;
14
17
  grantedScopes(apiKeyUuid: string): Promise<string[]>;
15
- apiKeyDetail(apiKeyUuid: string): Promise<ApiKeyDetail>;
18
+ apiKeyDetail(apiKeyUuid: string, reveal?: boolean): Promise<ApiKeyDetail>;
16
19
  hasScope(apiKey: ApiKeyEntity, scope: string): Promise<boolean>;
17
20
  validateAccess(scopeIdentifier: string): ApiKeyAccess;
18
21
  revokeApiKey(apiKeyUuid: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAGjD,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI9D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAWhC,qBACa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkC;gBAE9B,UAAU,EAAE,UAAU;IAE7C,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAoBrB,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC;IAetB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiB5D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IASpD,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAavD,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrE,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY;IAkB/C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC;IAkBnB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC;IAiBlB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAK9B,mBAAmB;IAajC,OAAO,CAAC,MAAM;YAMA,aAAa;IAO3B,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,kBAAkB,GAE7B;CACF"}
1
+ {"version":3,"file":"api.key.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAGjD,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAI9D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAYhC,qBACa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAJpC,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkC;gBAGxC,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB;IAGjD,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,eAAe,CAAC;IAgCrB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBjD,WAAW,CACf,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC;IAetB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiB5D,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAapD,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,MAAM,UAAQ,GACb,OAAO,CAAC,YAAY,CAAC;IAsBlB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrE,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY;IAkB/C,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC;IAkBnB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC;IAiBlB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAK9B,mBAAmB;IAajC,OAAO,CAAC,MAAM;YAMA,aAAa;IAO3B,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,kBAAkB,GAE7B;CACF"}
@@ -16,14 +16,16 @@ const crypto_1 = require("crypto");
16
16
  const typeorm_1 = require("typeorm");
17
17
  const access_exception_1 = require("../../global/exceptions/access.exception");
18
18
  const not_found_exception_1 = require("../../global/exceptions/not.found.exception");
19
+ const encryption_service_1 = require("../../common/services/encryption.service");
19
20
  const hash_util_1 = require("../../global/utilities/hash.util");
20
21
  const api_key_entity_1 = require("../entities/api.key.entity");
21
22
  const api_scope_entity_1 = require("../entities/api.scope.entity");
22
23
  const api_key_default_enum_1 = require("../enums/api.key.default.enum");
23
24
  const api_key_context_1 = require("../helpers/api.key.context");
24
25
  let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
25
- constructor(dataSource) {
26
+ constructor(dataSource, encryptionService) {
26
27
  this.dataSource = dataSource;
28
+ this.encryptionService = encryptionService;
27
29
  this.logger = new common_1.Logger(ApiKeyService_1.name);
28
30
  }
29
31
  async generateApiKey(name, options) {
@@ -32,14 +34,28 @@ let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
32
34
  name,
33
35
  key_prefix: rawKey.slice(0, api_key_default_enum_1.ApiKeyDefault.PREFIX_VISIBLE_LENGTH),
34
36
  key_hash: hash_util_1.Hash.sha256(rawKey),
37
+ key_encrypted: this.encryptionService.encrypt(rawKey),
35
38
  is_active: true,
36
39
  ...(options?.tenantId ? { tenant_id: options.tenantId } : {}),
37
40
  ...(options?.expiresAt ? { expires_at: options.expiresAt } : {}),
38
41
  ...(options?.createdBy ? { created_by: options.createdBy } : {}),
39
42
  }));
40
43
  await this.grantScopes(apiKey.id, options?.scopeIds, options?.createdBy);
44
+ delete apiKey.key_encrypted;
41
45
  return { rawKey, apiKey };
42
46
  }
47
+ async revealApiKey(apiKeyUuid) {
48
+ const apiKey = await this.apiKeyRepository
49
+ .createQueryBuilder('api_key')
50
+ .addSelect('api_key.key_encrypted')
51
+ .where('api_key.id = :id', { id: apiKeyUuid })
52
+ .getOne();
53
+ if (!apiKey)
54
+ throw new not_found_exception_1.NotFoundException('No API key exists for this id');
55
+ if (!apiKey.key_encrypted)
56
+ throw new not_found_exception_1.NotFoundException('This API key predates recoverable storage — reissue it instead.');
57
+ return this.encryptionService.decrypt(apiKey.key_encrypted);
58
+ }
43
59
  async grantScopes(apiKeyUuid, scopeIds, grantedBy) {
44
60
  if (!scopeIds?.length)
45
61
  return [];
@@ -67,15 +83,21 @@ let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
67
83
  const scopes = await this.grantedScopeRecords(apiKeyUuid);
68
84
  return scopes.map((scope) => scope.identifier);
69
85
  }
70
- async apiKeyDetail(apiKeyUuid) {
71
- const apiKey = await this.apiKeyRepository.findOne({
72
- where: { id: apiKeyUuid },
73
- relations: { tenant: true },
74
- });
86
+ async apiKeyDetail(apiKeyUuid, reveal = false) {
87
+ const query = this.apiKeyRepository
88
+ .createQueryBuilder('api_key')
89
+ .leftJoinAndSelect('api_key.tenant', 'tenant')
90
+ .where('api_key.id = :id', { id: apiKeyUuid });
91
+ if (reveal)
92
+ query.addSelect('api_key.key_encrypted');
93
+ const apiKey = await query.getOne();
75
94
  if (!apiKey)
76
95
  throw new not_found_exception_1.NotFoundException('No API key exists for this id');
96
+ const encrypted = apiKey.key_encrypted;
97
+ delete apiKey.key_encrypted;
77
98
  return Object.assign(apiKey, {
78
99
  scopes: await this.grantedScopeRecords(apiKeyUuid),
100
+ ...(encrypted ? { key: this.encryptionService.decrypt(encrypted) } : {}),
79
101
  });
80
102
  }
81
103
  async hasScope(apiKey, scope) {
@@ -149,6 +171,7 @@ let ApiKeyService = ApiKeyService_1 = class ApiKeyService {
149
171
  exports.ApiKeyService = ApiKeyService;
150
172
  exports.ApiKeyService = ApiKeyService = ApiKeyService_1 = __decorate([
151
173
  (0, common_1.Injectable)(),
152
- __metadata("design:paramtypes", [typeorm_1.DataSource])
174
+ __metadata("design:paramtypes", [typeorm_1.DataSource,
175
+ encryption_service_1.EncryptionService])
153
176
  ], ApiKeyService);
154
177
  //# sourceMappingURL=api.key.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.service.js","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,mCAAqC;AACrC,qCAAiD;AACjD,+EAA2E;AAC3E,qFAAgF;AAKhF,gEAAwD;AACxD,+DAA0D;AAC1D,mEAA8D;AAE9D,wEAA8D;AAC9D,gEAA2D;AAkBpD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAGxB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAFhC,WAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAEL,CAAC;IAEvD,KAAK,CAAC,cAAc,CAClB,IAAY,EACZ,OAA+B;QAE/B,MAAM,MAAM,GAAG,GAAG,oCAAa,CAAC,MAAM,IAAI,IAAA,oBAAW,EAAC,oCAAa,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC3B,IAAI;YACJ,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,oCAAa,CAAC,qBAAqB,CAAC;YAChE,QAAQ,EAAE,gBAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,IAAI;YACf,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC,CACH,CAAC;QAEF,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAGD,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,QAAmB,EACnB,SAAkB;QAElB,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,EAAE,CAAC;QAEjC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACjC,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7B,UAAU,EAAE,UAAU;YACtB,QAAQ;YACR,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,EAAE,QAAQ,EAAE,gBAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACxC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QACnE,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;YAC/D,OAAO,IAAI,CAAC;QAEd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE,CAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CACpE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAGD,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAMD,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;YACzB,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,uCAAiB,CAAC,+BAA+B,CAAC,CAAC;QAE1E,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC3B,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;SACnD,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAC,MAAoB,EAAE,KAAa;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IASD,cAAc,CAAC,eAAuB;QACpC,MAAM,OAAO,GAAG,+BAAa,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,kCAAe,CACvB,4DAA4D,CAC7D,CAAC;QAEJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC;YAC/C,MAAM,IAAI,kCAAe,CAAC,8CAA8C,CAAC,CAAC;QAE5E,IAAI,CAAC,OAAO,CAAC,MAAM;YACjB,MAAM,IAAI,kCAAe,CACvB,+CAA+C,CAChD,CAAC;QAEJ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM;YACT,MAAM,IAAI,uCAAiB,CAAC,YAAY,UAAU,kBAAkB,CAAC,CAAC;QACxE,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAQD,KAAK,CAAC,aAAa,CACjB,UAAkB,EAClB,SAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACjD,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,uCAAiB,CAAC,+BAA+B,CAAC,CAAC;QAE1E,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzC,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IACpE,CAAC;IAQD,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,SAAiB;QAEjB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,uCAAiB,CAAC,+BAA+B,CAAC,CAAC;QAE/D,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9C,MAAM,GAAG,CAAC,MAAM,CACd,6BAAY,EACZ,EAAE,EAAE,EAAE,UAAU,EAAE,EAClB,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,CAC7C,CAAC;YACF,MAAM,GAAG,CAAC,UAAU,CAAC,iCAAc,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;YACjE,MAAM,GAAG,CAAC,UAAU,CAAC,6BAAY,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAGO,KAAK,CAAC,mBAAmB,CAC/B,UAAkB;QAElB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACnD,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;YACjC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3B,CAAC,CAAC;QAEH,OAAO,SAAS;aACb,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;aACjC,MAAM,CAAC,CAAC,KAAK,EAAwB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,MAAM,CAAC,OAAiB,EAAE,KAAa;QAC7C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,oCAAa,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC1E,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAoB;QAC9C,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAChC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EACjB,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,EAAE,CAC7B,CAAC;IACJ,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,6BAAY,CAAC,CAAC;IACrD,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,iCAAc,CAAC,CAAC;IACvD,CAAC;CACF,CAAA;AAnNY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAI8B,oBAAU;GAHxC,aAAa,CAmNzB"}
1
+ {"version":3,"file":"api.key.service.js","sourceRoot":"","sources":["../../../src/auth/services/api.key.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { DataSource } from 'typeorm';
2
+ import { DeleteResult } from '../../common/types/common.response.types';
3
+ export declare class RoleService {
4
+ private readonly dataSource;
5
+ constructor(dataSource: DataSource);
6
+ deleteRole(roleUuid: string, actorUuid: string): Promise<DeleteResult>;
7
+ private get roleRepository();
8
+ }
9
+ //# sourceMappingURL=role.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.service.d.ts","sourceRoot":"","sources":["../../../src/auth/services/role.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAQxE,qBACa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAS7C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAY5E,OAAO,KAAK,cAAc,GAEzB;CACF"}
@@ -0,0 +1,40 @@
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.RoleService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const typeorm_1 = require("typeorm");
15
+ const not_found_exception_1 = require("../../global/exceptions/not.found.exception");
16
+ const system_role_entity_1 = require("../entities/system.role.entity");
17
+ const user_role_entity_1 = require("../entities/user.role.entity");
18
+ let RoleService = class RoleService {
19
+ constructor(dataSource) {
20
+ this.dataSource = dataSource;
21
+ }
22
+ async deleteRole(roleUuid, actorUuid) {
23
+ if (!(await this.roleRepository.existsBy({ id: roleUuid })))
24
+ throw new not_found_exception_1.NotFoundException('No role exists for this id');
25
+ await this.dataSource.transaction(async (trx) => {
26
+ await trx.softDelete(user_role_entity_1.UserRoleEntity, { role_id: roleUuid });
27
+ await trx.softDelete(system_role_entity_1.SystemRoleEntity, { id: roleUuid });
28
+ });
29
+ return { id: roleUuid, deleted: true, deleted_by: actorUuid };
30
+ }
31
+ get roleRepository() {
32
+ return this.dataSource.getRepository(system_role_entity_1.SystemRoleEntity);
33
+ }
34
+ };
35
+ exports.RoleService = RoleService;
36
+ exports.RoleService = RoleService = __decorate([
37
+ (0, common_1.Injectable)(),
38
+ __metadata("design:paramtypes", [typeorm_1.DataSource])
39
+ ], RoleService);
40
+ //# sourceMappingURL=role.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.service.js","sourceRoot":"","sources":["../../../src/auth/services/role.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,qCAAiD;AACjD,qFAAgF;AAEhF,uEAAkE;AAClE,mEAA8D;AAOvD,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IASvD,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,SAAiB;QAClD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzD,MAAM,IAAI,uCAAiB,CAAC,4BAA4B,CAAC,CAAC;QAE5D,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9C,MAAM,GAAG,CAAC,UAAU,CAAC,iCAAc,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC,UAAU,CAAC,qCAAgB,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IAED,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qCAAgB,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AAzBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAE8B,oBAAU;GADxC,WAAW,CAyBvB"}
@@ -21,5 +21,6 @@ export interface ApiKeyAccess {
21
21
  }
22
22
  export type ApiKeyDetail = ApiKeyEntity & {
23
23
  scopes: ScopeEntity[];
24
+ key?: string;
24
25
  };
25
26
  //# sourceMappingURL=api.key.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.key.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/api.key.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IAErB,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAGD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;CACtB;AAMD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"api.key.types.d.ts","sourceRoot":"","sources":["../../../src/auth/types/api.key.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IAErB,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAGD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;CACtB;AAOD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG;IACxC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"1749600000017.CreateSysApiKeysTable.d.ts","sourceRoot":"","sources":["../../src/migrations/1749600000017.CreateSysApiKeysTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,kCAAmC,SAAQ,gBAAgB;;IAMtE,OAAO;CAyBR"}
1
+ {"version":3,"file":"1749600000017.CreateSysApiKeysTable.d.ts","sourceRoot":"","sources":["../../src/migrations/1749600000017.CreateSysApiKeysTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,qBAAa,kCAAmC,SAAQ,gBAAgB;;IAMtE,OAAO;CA0BR"}
@@ -12,6 +12,7 @@ class CreateSysApiKeysTable1749600000017 extends migration_utility_1.MigrationUt
12
12
  this.string('name', { length: 255 });
13
13
  this.string('key_prefix', { length: 50 });
14
14
  this.string('key_hash', { length: 255 });
15
+ this.text('key_encrypted');
15
16
  this.boolean('is_active', { nullable: false, default: true });
16
17
  this.date('expires_at');
17
18
  this.date('revoked_at');
@@ -1 +1 @@
1
- {"version":3,"file":"1749600000017.CreateSysApiKeysTable.js","sourceRoot":"","sources":["../../src/migrations/1749600000017.CreateSysApiKeysTable.ts"],"names":[],"mappings":";;;AAAA,6EAAyE;AAEzE,MAAa,kCAAmC,SAAQ,oCAAgB;IACtE;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,aAAa;YAC3B,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,iBAAiB;YAC/B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;CACF;AA/BD,gFA+BC"}
1
+ {"version":3,"file":"1749600000017.CreateSysApiKeysTable.js","sourceRoot":"","sources":["../../src/migrations/1749600000017.CreateSysApiKeysTable.ts"],"names":[],"mappings":";;;AAAA,6EAAyE;AAEzE,MAAa,kCAAmC,SAAQ,oCAAgB;IACtE;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,YAAY,EAAE,aAAa;YAC3B,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,YAAY,EAAE,iBAAiB;YAC/B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;CACF;AAhCD,gFAgCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neohm/nestend",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "Reusable NestJS utilities: entities, queue, auth, cache, encryption, migrations and more",
5
5
  "author": "Neohm",
6
6
  "license": "MIT",