@neohm/nestend 3.2.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -7
- package/dist/admin/controllers/admin.api.key.controller.d.ts.map +1 -1
- package/dist/admin/controllers/admin.api.key.controller.js +5 -3
- package/dist/admin/controllers/admin.api.key.controller.js.map +1 -1
- package/dist/admin/controllers/admin.tenant.user.controller.d.ts.map +1 -1
- package/dist/admin/controllers/admin.tenant.user.controller.js +4 -4
- package/dist/admin/controllers/admin.tenant.user.controller.js.map +1 -1
- package/dist/admin/controllers/system.role.controller.d.ts +24 -0
- package/dist/admin/controllers/system.role.controller.d.ts.map +1 -0
- package/dist/admin/controllers/system.role.controller.js +106 -0
- package/dist/admin/controllers/system.role.controller.js.map +1 -0
- package/dist/admin/dtos/add.system.role.dto.d.ts +8 -0
- package/dist/admin/dtos/add.system.role.dto.d.ts.map +1 -0
- package/dist/admin/dtos/add.system.role.dto.js +56 -0
- package/dist/admin/dtos/add.system.role.dto.js.map +1 -0
- package/dist/admin/dtos/base.user.dto.d.ts +1 -1
- package/dist/admin/dtos/base.user.dto.d.ts.map +1 -1
- package/dist/admin/dtos/base.user.dto.js +6 -1
- package/dist/admin/dtos/base.user.dto.js.map +1 -1
- package/dist/admin/es6.classes.d.ts +4 -2
- package/dist/admin/es6.classes.d.ts.map +1 -1
- package/dist/admin/es6.classes.js +6 -0
- package/dist/admin/es6.classes.js.map +1 -1
- package/dist/admin/libraries/bulk.user.data.processor.d.ts +1 -0
- package/dist/admin/libraries/bulk.user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/bulk.user.data.processor.js +7 -0
- package/dist/admin/libraries/bulk.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/client.user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/client.user.data.processor.js +5 -1
- package/dist/admin/libraries/client.user.data.processor.js.map +1 -1
- package/dist/admin/libraries/system.role.data.processor.d.ts +10 -0
- package/dist/admin/libraries/system.role.data.processor.d.ts.map +1 -0
- package/dist/admin/libraries/system.role.data.processor.js +41 -0
- package/dist/admin/libraries/system.role.data.processor.js.map +1 -0
- package/dist/admin/libraries/user.data.processor.d.ts +2 -1
- package/dist/admin/libraries/user.data.processor.d.ts.map +1 -1
- package/dist/admin/libraries/user.data.processor.js +9 -2
- package/dist/admin/libraries/user.data.processor.js.map +1 -1
- package/dist/admin/services/admin.access.service.d.ts +2 -0
- package/dist/admin/services/admin.access.service.d.ts.map +1 -1
- package/dist/admin/services/admin.access.service.js +3 -0
- package/dist/admin/services/admin.access.service.js.map +1 -1
- package/dist/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +10 -3
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/entities/api.key.entity.d.ts +1 -0
- package/dist/auth/entities/api.key.entity.d.ts.map +1 -1
- package/dist/auth/entities/api.key.entity.js +4 -0
- package/dist/auth/entities/api.key.entity.js.map +1 -1
- package/dist/auth/es6.classes.d.ts +2 -1
- package/dist/auth/es6.classes.d.ts.map +1 -1
- package/dist/auth/es6.classes.js +2 -0
- package/dist/auth/es6.classes.js.map +1 -1
- package/dist/auth/services/api.key.service.d.ts +5 -2
- package/dist/auth/services/api.key.service.d.ts.map +1 -1
- package/dist/auth/services/api.key.service.js +30 -7
- package/dist/auth/services/api.key.service.js.map +1 -1
- package/dist/auth/services/role.service.d.ts +9 -0
- package/dist/auth/services/role.service.d.ts.map +1 -0
- package/dist/auth/services/role.service.js +40 -0
- package/dist/auth/services/role.service.js.map +1 -0
- package/dist/auth/types/api.key.types.d.ts +1 -0
- package/dist/auth/types/api.key.types.d.ts.map +1 -1
- package/dist/migrations/1749600000017.CreateSysApiKeysTable.d.ts.map +1 -1
- package/dist/migrations/1749600000017.CreateSysApiKeysTable.js +1 -0
- package/dist/migrations/1749600000017.CreateSysApiKeysTable.js.map +1 -1
- 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 |
|
|
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.
|
|
829
|
-
|
|
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;
|
|
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
|
-
|
|
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.
|
|
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":";;;;;;;;;;;;;;;AAAA,2CAAoE;AACpE,6CAAuE;AACvE,mEAA+D;AAC/D,yEAAoE;AACpE,2EAAsE;AACtE,2EAAsE;AACtE,gFAA0E;AAC1E,gFAA0E;AAC1E,6DAAuD;AACvD,+DAAyD;AAUlD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAChC,YACmB,kBAAsC,EACtC,aAA4B,EAC5B,UAAsB;QAFtB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,kBAAa,GAAb,aAAa,CAAe;QAC5B,eAAU,GAAV,UAAU,CAAY;IACtC,CAAC;IAQE,AAAN,KAAK,CAAC,KAAK,CAAS,GAAiB;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;QAC/D,OAAO,IAAI,4CAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAQK,AAAN,KAAK,CAAC,IAAI,CAAS,GAAkB;QACnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QACtD,OAAO,IAAI,4CAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAQK,AAAN,KAAK,CAAC,MAAM,CAAU,EAAE,EAAE,EAAmB;QAC3C,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.tenant.user.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,qBACa,yBAAyB;IAElC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IACzD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B;IACzE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;gBAHtB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,0BAA0B,EAAE,0BAA0B,EACtD,UAAU,EAAE,UAAU;IASrC,gBAAgB,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"admin.tenant.user.controller.d.ts","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,qBACa,yBAAyB;IAElC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IACzD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B;IACzE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU;gBAHtB,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,0BAA0B,EAAE,0BAA0B,EACtD,UAAU,EAAE,UAAU;IASrC,gBAAgB,CAAU,EAAE,EAAE,EAAE,EAAE,eAAe;IAkBjD,aAAa,CAAS,GAAG,EAAE,gBAAgB;IAa3C,kBAAkB,CAAS,GAAG,EAAE,eAAe;IAW/C,eAAe,CAAS,GAAG,EAAE,iBAAiB;;;;;;;IAW9C,gBAAgB,CAA6B,EAAE,EAAE,MAAM;CAI9D"}
|
|
@@ -40,7 +40,7 @@ let AdminTenantUserController = class AdminTenantUserController {
|
|
|
40
40
|
await this.adminAccessService.validateContentReader();
|
|
41
41
|
const user = await user_entity_1.UserEntity.findOne({
|
|
42
42
|
where: { id, user_type: user_type_enum_1.UserType.TENANT_USER },
|
|
43
|
-
relations: { tenant: true },
|
|
43
|
+
relations: { tenant: true, userRoles: { role: true } },
|
|
44
44
|
});
|
|
45
45
|
if (!user)
|
|
46
46
|
throw new common_1.NotFoundException('No client user exists for this id');
|
|
@@ -68,7 +68,7 @@ __decorate([
|
|
|
68
68
|
(0, common_1.Get)(':id'),
|
|
69
69
|
(0, swagger_1.ApiOperation)({
|
|
70
70
|
summary: 'One client (tenant-scoped) user, in full.',
|
|
71
|
-
description: "Carries the user's tenant name alongside everything the listing leaves out. Requires the global
|
|
71
|
+
description: "Carries the user's tenant name and current role grants alongside everything the listing leaves out. The grants matter for editing: a save reconciles `role_ids` against them and revokes whatever the payload omits, so an edit form has to start from this list. Requires at least the global content reader role.",
|
|
72
72
|
}),
|
|
73
73
|
__param(0, (0, common_1.Param)()),
|
|
74
74
|
__metadata("design:type", Function),
|
|
@@ -78,8 +78,8 @@ __decorate([
|
|
|
78
78
|
__decorate([
|
|
79
79
|
(0, common_1.Post)(),
|
|
80
80
|
(0, swagger_1.ApiOperation)({
|
|
81
|
-
summary: 'Register a single client (tenant-scoped) user.',
|
|
82
|
-
description: 'Requires the global
|
|
81
|
+
summary: 'Register a single client (tenant-scoped) user, or update one.',
|
|
82
|
+
description: 'Send an `id` to edit that user; omit it to register a new one. `password` is required only when creating. `role_ids` replaces the current grants, so an edit must send the full set (read them from `GET :id`). `tenant_id` is not applied on an edit — a user does not move between tenants. Requires at least the global admin role.',
|
|
83
83
|
}),
|
|
84
84
|
__param(0, (0, common_1.Body)()),
|
|
85
85
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.tenant.user.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAA+C;AAC/C,iEAA6D;AAC7D,oEAA2D;AAC3D,2EAAsE;AACtE,mEAA6D;AAC7D,qEAA+D;AAC/D,uEAAiE;AACjE,oFAA8E;AAC9E,wFAAkF;AAClF,4FAAsF;AACtF,wFAAkF;AAClF,2EAAsE;AACtE,yEAAqE;AACrE,2GAAoG;AACpG,mEAA+D;AAGxD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YACqB,kBAAsC,EACtC,aAA4B,EAC5B,0BAAsD,EACtD,UAAsB;QAHtB,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,kBAAa,GAAb,aAAa,CAAe;QAC5B,+BAA0B,GAA1B,0BAA0B,CAA4B;QACtD,eAAU,GAAV,UAAU,CAAY;IACxC,CAAC;IAQE,AAAN,KAAK,CAAC,gBAAgB,CAAU,EAAE,EAAE,EAAmB;QACrD,MAAM,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;QAEtD,MAAM,IAAI,GAAG,MAAM,wBAAU,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,yBAAQ,CAAC,WAAW,EAAE;YAC9C,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"admin.tenant.user.controller.js","sourceRoot":"","sources":["../../../src/admin/controllers/admin.tenant.user.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"}
|
|
@@ -2,7 +2,7 @@ import { CommonPayloadDto } from '../../common/dtos/common.payload.dto';
|
|
|
2
2
|
export declare class BaseUserDto extends CommonPayloadDto {
|
|
3
3
|
full_name: string;
|
|
4
4
|
email: string;
|
|
5
|
-
password
|
|
5
|
+
password?: string;
|
|
6
6
|
country?: string;
|
|
7
7
|
contact_code?: string;
|
|
8
8
|
contact?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.user.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.user.dto.d.ts","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AASxE,qBAAa,WAAY,SAAQ,gBAAgB;IAI/C,SAAS,EAAE,MAAM,CAAC;IAKlB,KAAK,EAAE,MAAM,CAAC;IAiBd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -29,7 +29,12 @@ __decorate([
|
|
|
29
29
|
__metadata("design:type", String)
|
|
30
30
|
], BaseUserDto.prototype, "email", void 0);
|
|
31
31
|
__decorate([
|
|
32
|
-
(0, swagger_1.
|
|
32
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
33
|
+
example: 'S3curePass!',
|
|
34
|
+
minLength: 8,
|
|
35
|
+
description: 'Required on create, ignored on edit.',
|
|
36
|
+
}),
|
|
37
|
+
(0, class_validator_1.IsOptional)(),
|
|
33
38
|
(0, class_validator_1.IsString)(),
|
|
34
39
|
(0, class_validator_1.MinLength)(8),
|
|
35
40
|
(0, class_validator_1.MaxLength)(72),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.user.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"base.user.dto.js","sourceRoot":"","sources":["../../../src/admin/dtos/base.user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,6CAAmE;AACnE,6EAAwE;AASxE,MAAa,WAAY,SAAQ,qCAAgB;CAkDhD;AAlDD,kCAkDC;AA9CC;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACpC,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;8CACG;AAKlB;IAHC,IAAA,qBAAW,EAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACzC,IAAA,yBAAO,GAAE;IACT,IAAA,2BAAS,EAAC,GAAG,CAAC;;0CACD;AAiBd;IATC,IAAA,6BAAmB,EAAC;QACnB,OAAO,EAAE,aAAa;QACtB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,sCAAsC;KACpD,CAAC;IACD,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,2BAAS,EAAC,EAAE,CAAC;;6CACI;AAMlB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,GAAG,CAAC;;4CACE;AAMjB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACxC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;;iDACQ;AAMtB;IAJC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC9C,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,EAAE,CAAC;;4CACG;AAKjB;IAHC,IAAA,6BAAmB,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;2CACK"}
|
|
@@ -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;
|
|
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;
|
|
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"}
|
|
@@ -11,6 +11,7 @@ export declare class BulkUserDataProcessor extends UserDataProcessor {
|
|
|
11
11
|
private validate;
|
|
12
12
|
private create;
|
|
13
13
|
private flagDuplicateEmails;
|
|
14
|
+
private flagMissingPasswords;
|
|
14
15
|
private flagTakenEmails;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=bulk.user.data.processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,qBAAa,qBAAsB,SAAQ,iBAAiB;IAG9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;gBAEN,aAAa,EAAE,aAAa;IAInD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YAMlD,QAAQ;
|
|
1
|
+
{"version":3,"file":"bulk.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQ3D,qBAAa,qBAAsB,SAAQ,iBAAiB;IAG9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC;gBAEN,aAAa,EAAE,aAAa;IAInD,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YAMlD,QAAQ;YAYR,MAAM;IA2BpB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,oBAAoB;YAQd,eAAe;CAa9B"}
|
|
@@ -22,6 +22,7 @@ class BulkUserDataProcessor extends user_data_processor_1.UserDataProcessor {
|
|
|
22
22
|
this.setColumnError('tenant_id', 'Tenant not found or inactive');
|
|
23
23
|
this.flagDuplicateEmails();
|
|
24
24
|
await this.flagTakenEmails();
|
|
25
|
+
this.flagMissingPasswords();
|
|
25
26
|
this.throwExceptionOnError();
|
|
26
27
|
}
|
|
27
28
|
async create() {
|
|
@@ -56,6 +57,12 @@ class BulkUserDataProcessor extends user_data_processor_1.UserDataProcessor {
|
|
|
56
57
|
}
|
|
57
58
|
});
|
|
58
59
|
}
|
|
60
|
+
flagMissingPasswords() {
|
|
61
|
+
this.payload.users.forEach((user, index) => {
|
|
62
|
+
if (!user.password)
|
|
63
|
+
this.setColumnError(`users[${index}].password`, 'password is required');
|
|
64
|
+
});
|
|
65
|
+
}
|
|
59
66
|
async flagTakenEmails() {
|
|
60
67
|
const emails = this.payload.users.map((user) => user.email);
|
|
61
68
|
const existing = await user_entity_1.UserEntity.find({ where: { email: (0, typeorm_1.In)(emails) } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulk.user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":";;;AAAA,qCAA6B;AAC7B,+DAA0D;AAC1D,iEAA6D;AAC7D,oEAA2D;AAG3D,wEAAkE;AAUlE,MAAa,qBAAsB,SAAQ,uCAAiB;IAG1D,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;IAEzD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;QAEnE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"bulk.user.data.processor.js","sourceRoot":"","sources":["../../../src/admin/libraries/bulk.user.data.processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"client.user.data.processor.d.ts","sourceRoot":"","sources":["../../../src/admin/libraries/client.user.data.processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAmBpG,qBAAa,uBAAwB,SAAQ,iBAAiB;IAO1D,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAP7C,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IAEnE,OAAO,CAAC,MAAM,CAA6B;gBAGxB,aAAa,EAAE,aAAa,EAC5B,0BAA0B,EAAE,0BAA0B;IAKnE,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;YAM/C,QAAQ;YAgBR,cAAc;YAQd,YAAY;YAuBZ,IAAI;YAKJ,MAAM;YAsBN,MAAM;YAmBN,UAAU;YASV,WAAW;YA4BX,UAAU;CAiBzB"}
|
|
@@ -24,8 +24,12 @@ class ClientUserDataProcessor extends user_data_processor_1.UserDataProcessor {
|
|
|
24
24
|
return this.save();
|
|
25
25
|
}
|
|
26
26
|
async validate() {
|
|
27
|
+
const editId = this.payload.id;
|
|
28
|
+
if (editId && !(await user_entity_1.UserEntity.existsBy({ id: editId })))
|
|
29
|
+
this.setColumnError('id', 'No client user exists for this id');
|
|
27
30
|
await this.validateTenant();
|
|
28
|
-
await this.assertEmailAvailable(this.payload.email);
|
|
31
|
+
await this.assertEmailAvailable(this.payload.email, 'email', editId);
|
|
32
|
+
this.assertPasswordOnCreate(this.payload.password, !!editId);
|
|
29
33
|
await this.resolveRoles(this.payload.role_ids, 'role_ids');
|
|
30
34
|
this.throwExceptionOnError();
|
|
31
35
|
}
|