@forklaunch/implementation-iam-base 0.3.3 → 0.3.6
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/lib/domain/schemas/index.d.mts +334 -707
- package/lib/domain/schemas/index.d.ts +334 -707
- package/lib/domain/schemas/index.js +59 -93
- package/lib/domain/schemas/index.mjs +36 -40
- package/lib/services/index.d.mts +147 -475
- package/lib/services/index.d.ts +147 -475
- package/lib/services/index.js +180 -225
- package/lib/services/index.mjs +182 -194
- package/package.json +11 -11
package/lib/services/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -8,18 +8,14 @@ var __export = (target, all) => {
|
|
|
8
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
12
|
for (let key of __getOwnPropNames(from))
|
|
13
13
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, {
|
|
15
|
-
get: () => from[key],
|
|
16
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
-
});
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
15
|
}
|
|
19
16
|
return to;
|
|
20
17
|
};
|
|
21
|
-
var __toCommonJS = (mod) =>
|
|
22
|
-
__copyProps(__defProp({}, '__esModule', { value: true }), mod);
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
23
19
|
|
|
24
20
|
// services/index.ts
|
|
25
21
|
var services_exports = {};
|
|
@@ -32,40 +28,34 @@ __export(services_exports, {
|
|
|
32
28
|
module.exports = __toCommonJS(services_exports);
|
|
33
29
|
|
|
34
30
|
// services/organization.service.ts
|
|
35
|
-
var import_http = require(
|
|
36
|
-
var import_internal = require(
|
|
31
|
+
var import_http = require("@forklaunch/core/http");
|
|
32
|
+
var import_internal = require("@forklaunch/internal");
|
|
37
33
|
var BaseOrganizationService = class {
|
|
38
34
|
constructor(em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
39
35
|
this.em = em;
|
|
40
36
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
41
37
|
this.schemaValidator = schemaValidator;
|
|
42
38
|
this.mappers = mappers;
|
|
43
|
-
this._mappers = (0, import_internal.transformIntoInternalMapper)(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
: {
|
|
50
|
-
logging: false,
|
|
51
|
-
metrics: false,
|
|
52
|
-
tracing: false
|
|
53
|
-
};
|
|
39
|
+
this._mappers = (0, import_internal.transformIntoInternalMapper)(mappers, schemaValidator);
|
|
40
|
+
this.evaluatedTelemetryOptions = options?.telemetry ? (0, import_http.evaluateTelemetryOptions)(options.telemetry).enabled : {
|
|
41
|
+
logging: false,
|
|
42
|
+
metrics: false,
|
|
43
|
+
tracing: false
|
|
44
|
+
};
|
|
54
45
|
}
|
|
55
46
|
_mappers;
|
|
56
47
|
evaluatedTelemetryOptions;
|
|
57
48
|
async createOrganization(organizationDto, em) {
|
|
58
49
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
59
50
|
this.openTelemetryCollector.info(
|
|
60
|
-
|
|
51
|
+
"Creating organization",
|
|
61
52
|
organizationDto
|
|
62
53
|
);
|
|
63
54
|
}
|
|
64
|
-
const organization =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
);
|
|
55
|
+
const organization = await this._mappers.CreateOrganizationMapper.deserializeDtoToEntity(
|
|
56
|
+
organizationDto,
|
|
57
|
+
em ?? this.em
|
|
58
|
+
);
|
|
69
59
|
if (em) {
|
|
70
60
|
await em.persist(organization);
|
|
71
61
|
} else {
|
|
@@ -75,26 +65,27 @@ var BaseOrganizationService = class {
|
|
|
75
65
|
}
|
|
76
66
|
async getOrganization(idDto, em) {
|
|
77
67
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
78
|
-
this.openTelemetryCollector.info(
|
|
68
|
+
this.openTelemetryCollector.info("Getting organization", idDto);
|
|
79
69
|
}
|
|
80
70
|
const organization = await (em ?? this.em).findOneOrFail(
|
|
81
|
-
|
|
71
|
+
"Organization",
|
|
82
72
|
idDto
|
|
83
73
|
);
|
|
84
|
-
return this._mappers.OrganizationMapper.serializeEntityToDto(
|
|
74
|
+
return this._mappers.OrganizationMapper.serializeEntityToDto(
|
|
75
|
+
organization
|
|
76
|
+
);
|
|
85
77
|
}
|
|
86
78
|
async updateOrganization(organizationDto, em) {
|
|
87
79
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
88
80
|
this.openTelemetryCollector.info(
|
|
89
|
-
|
|
81
|
+
"Updating organization",
|
|
90
82
|
organizationDto
|
|
91
83
|
);
|
|
92
84
|
}
|
|
93
|
-
const updatedOrganization =
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
);
|
|
85
|
+
const updatedOrganization = await this._mappers.UpdateOrganizationMapper.deserializeDtoToEntity(
|
|
86
|
+
organizationDto,
|
|
87
|
+
em ?? this.em
|
|
88
|
+
);
|
|
98
89
|
if (em) {
|
|
99
90
|
await em.persist(updatedOrganization);
|
|
100
91
|
} else {
|
|
@@ -106,44 +97,32 @@ var BaseOrganizationService = class {
|
|
|
106
97
|
}
|
|
107
98
|
async deleteOrganization(idDto, em) {
|
|
108
99
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
109
|
-
this.openTelemetryCollector.info(
|
|
100
|
+
this.openTelemetryCollector.info("Deleting organization", idDto);
|
|
110
101
|
}
|
|
111
102
|
if (em) {
|
|
112
|
-
await em.nativeDelete(
|
|
103
|
+
await em.nativeDelete("Organization", idDto);
|
|
113
104
|
} else {
|
|
114
|
-
await this.em.nativeDelete(
|
|
105
|
+
await this.em.nativeDelete("Organization", idDto);
|
|
115
106
|
}
|
|
116
107
|
}
|
|
117
108
|
};
|
|
118
109
|
|
|
119
110
|
// services/permission.service.ts
|
|
120
|
-
var import_http2 = require(
|
|
121
|
-
var import_internal2 = require(
|
|
111
|
+
var import_http2 = require("@forklaunch/core/http");
|
|
112
|
+
var import_internal2 = require("@forklaunch/internal");
|
|
122
113
|
var BasePermissionService = class {
|
|
123
|
-
constructor(
|
|
124
|
-
em,
|
|
125
|
-
roleServiceFactory,
|
|
126
|
-
openTelemetryCollector,
|
|
127
|
-
schemaValidator,
|
|
128
|
-
mappers,
|
|
129
|
-
options
|
|
130
|
-
) {
|
|
114
|
+
constructor(em, roleServiceFactory, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
131
115
|
this.em = em;
|
|
132
116
|
this.roleServiceFactory = roleServiceFactory;
|
|
133
117
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
134
118
|
this.schemaValidator = schemaValidator;
|
|
135
119
|
this.mappers = mappers;
|
|
136
|
-
this._mappers = (0, import_internal2.transformIntoInternalMapper)(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
: {
|
|
143
|
-
logging: false,
|
|
144
|
-
metrics: false,
|
|
145
|
-
tracing: false
|
|
146
|
-
};
|
|
120
|
+
this._mappers = (0, import_internal2.transformIntoInternalMapper)(mappers, schemaValidator);
|
|
121
|
+
this.evaluatedTelemetryOptions = options?.telemetry ? (0, import_http2.evaluateTelemetryOptions)(options.telemetry).enabled : {
|
|
122
|
+
logging: false,
|
|
123
|
+
metrics: false,
|
|
124
|
+
tracing: false
|
|
125
|
+
};
|
|
147
126
|
}
|
|
148
127
|
_mappers;
|
|
149
128
|
evaluatedTelemetryOptions;
|
|
@@ -159,32 +138,33 @@ var BasePermissionService = class {
|
|
|
159
138
|
async removePermissionsFromRoles(roles, permissions) {
|
|
160
139
|
return Promise.all(
|
|
161
140
|
roles.map(async (role) => {
|
|
162
|
-
permissions.forEach(
|
|
163
|
-
role.permissions.remove(permission)
|
|
141
|
+
permissions.forEach(
|
|
142
|
+
(permission) => role.permissions.remove(permission)
|
|
164
143
|
);
|
|
165
144
|
return role;
|
|
166
145
|
})
|
|
167
146
|
);
|
|
168
147
|
}
|
|
169
148
|
async getBatchRoles(roleIds, em) {
|
|
170
|
-
return roleIds
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
)
|
|
183
|
-
: [];
|
|
149
|
+
return roleIds ? await Promise.all(
|
|
150
|
+
(await this.roleServiceFactory().getBatchRoles(roleIds, em)).map(
|
|
151
|
+
async (role) => {
|
|
152
|
+
return (em ?? this.em).merge(
|
|
153
|
+
await this._mappers.RoleEntityMapper.deserializeDtoToEntity(
|
|
154
|
+
role,
|
|
155
|
+
em ?? this.em
|
|
156
|
+
)
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
)
|
|
160
|
+
) : [];
|
|
184
161
|
}
|
|
185
162
|
// end: global helper functions
|
|
186
163
|
// start: createPermission helper functions
|
|
187
|
-
async createPermissionDto({
|
|
164
|
+
async createPermissionDto({
|
|
165
|
+
permission,
|
|
166
|
+
addToRoles
|
|
167
|
+
}) {
|
|
188
168
|
let roles = [];
|
|
189
169
|
if (addToRoles) {
|
|
190
170
|
roles = await this.updateRolesWithPermissions(addToRoles, [permission]);
|
|
@@ -199,16 +179,14 @@ var BasePermissionService = class {
|
|
|
199
179
|
em ?? this.em
|
|
200
180
|
)
|
|
201
181
|
),
|
|
202
|
-
addToRoles: permissionDto.addToRolesIds
|
|
203
|
-
? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
|
|
204
|
-
: []
|
|
182
|
+
addToRoles: permissionDto.addToRolesIds ? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em) : []
|
|
205
183
|
};
|
|
206
184
|
}
|
|
207
185
|
// end: createPermission helper functions
|
|
208
186
|
async createPermission(createPermissionDto, em) {
|
|
209
187
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
210
188
|
this.openTelemetryCollector.info(
|
|
211
|
-
|
|
189
|
+
"Creating permission",
|
|
212
190
|
createPermissionDto
|
|
213
191
|
);
|
|
214
192
|
}
|
|
@@ -225,7 +203,7 @@ var BasePermissionService = class {
|
|
|
225
203
|
async createBatchPermissions(permissionDtos, em) {
|
|
226
204
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
227
205
|
this.openTelemetryCollector.info(
|
|
228
|
-
|
|
206
|
+
"Creating batch permissions",
|
|
229
207
|
permissionDtos
|
|
230
208
|
);
|
|
231
209
|
}
|
|
@@ -239,10 +217,7 @@ var BasePermissionService = class {
|
|
|
239
217
|
)
|
|
240
218
|
);
|
|
241
219
|
roles.forEach((role) => {
|
|
242
|
-
if (
|
|
243
|
-
rolesCache[role.id] &&
|
|
244
|
-
role.permissions !== rolesCache[role.id].permissions
|
|
245
|
-
) {
|
|
220
|
+
if (rolesCache[role.id] && role.permissions !== rolesCache[role.id].permissions) {
|
|
246
221
|
role.permissions.getItems().forEach((permission2) => {
|
|
247
222
|
if (!rolesCache[role.id].permissions.contains(permission2)) {
|
|
248
223
|
rolesCache[role.id].permissions.add(permission2);
|
|
@@ -261,41 +236,40 @@ var BasePermissionService = class {
|
|
|
261
236
|
await this.em.persistAndFlush(entities);
|
|
262
237
|
}
|
|
263
238
|
return Promise.all(
|
|
264
|
-
permissions.map(
|
|
265
|
-
this._mappers.PermissionMapper.serializeEntityToDto(permission)
|
|
239
|
+
permissions.map(
|
|
240
|
+
async (permission) => this._mappers.PermissionMapper.serializeEntityToDto(permission)
|
|
266
241
|
)
|
|
267
242
|
);
|
|
268
243
|
}
|
|
269
244
|
async getPermission(idDto, em) {
|
|
270
245
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
271
|
-
this.openTelemetryCollector.info(
|
|
246
|
+
this.openTelemetryCollector.info("Getting permission", idDto);
|
|
272
247
|
}
|
|
273
|
-
const permission = await (em ?? this.em).findOneOrFail(
|
|
274
|
-
return this._mappers.PermissionMapper.serializeEntityToDto(
|
|
248
|
+
const permission = await (em ?? this.em).findOneOrFail("Permission", idDto);
|
|
249
|
+
return this._mappers.PermissionMapper.serializeEntityToDto(
|
|
250
|
+
permission
|
|
251
|
+
);
|
|
275
252
|
}
|
|
276
253
|
async getBatchPermissions(idsDto, em) {
|
|
277
254
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
278
|
-
this.openTelemetryCollector.info(
|
|
255
|
+
this.openTelemetryCollector.info("Getting batch permissions", idsDto);
|
|
279
256
|
}
|
|
280
257
|
return Promise.all(
|
|
281
|
-
(await (em ?? this.em).find(
|
|
282
|
-
this._mappers.PermissionMapper.serializeEntityToDto(
|
|
258
|
+
(await (em ?? this.em).find("Permission", idsDto)).map(
|
|
259
|
+
(permission) => this._mappers.PermissionMapper.serializeEntityToDto(
|
|
260
|
+
permission
|
|
261
|
+
)
|
|
283
262
|
)
|
|
284
263
|
);
|
|
285
264
|
}
|
|
286
265
|
// start: updatePermission helper functions
|
|
287
266
|
updatePermissionDto = async (permissionDto, em) => {
|
|
288
|
-
const permission =
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
const
|
|
294
|
-
? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
|
|
295
|
-
: [];
|
|
296
|
-
const removeFromRoles = permissionDto.removeFromRolesIds
|
|
297
|
-
? await this.getBatchRoles({ ids: permissionDto.removeFromRolesIds }, em)
|
|
298
|
-
: [];
|
|
267
|
+
const permission = await this._mappers.UpdatePermissionMapper.deserializeDtoToEntity(
|
|
268
|
+
permissionDto,
|
|
269
|
+
em ?? this.em
|
|
270
|
+
);
|
|
271
|
+
const addToRoles = permissionDto.addToRolesIds ? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em) : [];
|
|
272
|
+
const removeFromRoles = permissionDto.removeFromRolesIds ? await this.getBatchRoles({ ids: permissionDto.removeFromRolesIds }, em) : [];
|
|
299
273
|
let roles = [];
|
|
300
274
|
roles = roles.concat(
|
|
301
275
|
await this.updateRolesWithPermissions(addToRoles, [permission])
|
|
@@ -311,7 +285,7 @@ var BasePermissionService = class {
|
|
|
311
285
|
// end: updatePermission helper functions
|
|
312
286
|
async updatePermission(permissionDto, em) {
|
|
313
287
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
314
|
-
this.openTelemetryCollector.info(
|
|
288
|
+
this.openTelemetryCollector.info("Updating permission", permissionDto);
|
|
315
289
|
}
|
|
316
290
|
const { permission, roles } = await this.updatePermissionDto(permissionDto);
|
|
317
291
|
const entities = await (em ?? this.em).upsertMany([permission, ...roles]);
|
|
@@ -325,7 +299,7 @@ var BasePermissionService = class {
|
|
|
325
299
|
async updateBatchPermissions(permissionDtos, em) {
|
|
326
300
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
327
301
|
this.openTelemetryCollector.info(
|
|
328
|
-
|
|
302
|
+
"Updating batch permissions",
|
|
329
303
|
permissionDtos
|
|
330
304
|
);
|
|
331
305
|
}
|
|
@@ -333,13 +307,9 @@ var BasePermissionService = class {
|
|
|
333
307
|
const permissions = [];
|
|
334
308
|
await (em ?? this.em).transactional(async (em2) => {
|
|
335
309
|
permissionDtos.map(async (updatePermissionDto) => {
|
|
336
|
-
const { permission, roles } =
|
|
337
|
-
await this.updatePermissionDto(updatePermissionDto);
|
|
310
|
+
const { permission, roles } = await this.updatePermissionDto(updatePermissionDto);
|
|
338
311
|
roles.forEach((role) => {
|
|
339
|
-
if (
|
|
340
|
-
rolesCache[role.id] &&
|
|
341
|
-
role.permissions !== rolesCache[role.id].permissions
|
|
342
|
-
) {
|
|
312
|
+
if (rolesCache[role.id] && role.permissions !== rolesCache[role.id].permissions) {
|
|
343
313
|
role.permissions.getItems().forEach((permission2) => {
|
|
344
314
|
if (!rolesCache[role.id].permissions.contains(permission2)) {
|
|
345
315
|
rolesCache[role.id].permissions.add(permission2);
|
|
@@ -359,53 +329,48 @@ var BasePermissionService = class {
|
|
|
359
329
|
}
|
|
360
330
|
});
|
|
361
331
|
return Promise.all(
|
|
362
|
-
permissions.map(
|
|
363
|
-
this._mappers.PermissionMapper.serializeEntityToDto(permission)
|
|
332
|
+
permissions.map(
|
|
333
|
+
(permission) => this._mappers.PermissionMapper.serializeEntityToDto(permission)
|
|
364
334
|
)
|
|
365
335
|
);
|
|
366
336
|
}
|
|
367
337
|
async deletePermission(idDto, em) {
|
|
368
338
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
369
|
-
this.openTelemetryCollector.info(
|
|
339
|
+
this.openTelemetryCollector.info("Deleting permission", idDto);
|
|
370
340
|
}
|
|
371
|
-
await (em ?? this.em).nativeDelete(
|
|
341
|
+
await (em ?? this.em).nativeDelete("Permission", idDto);
|
|
372
342
|
}
|
|
373
343
|
async deleteBatchPermissions(idsDto, em) {
|
|
374
344
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
375
|
-
this.openTelemetryCollector.info(
|
|
345
|
+
this.openTelemetryCollector.info("Deleting batch permissions", idsDto);
|
|
376
346
|
}
|
|
377
|
-
await (em ?? this.em).nativeDelete(
|
|
347
|
+
await (em ?? this.em).nativeDelete("Permission", {
|
|
378
348
|
id: { $in: idsDto.ids }
|
|
379
349
|
});
|
|
380
350
|
}
|
|
381
351
|
};
|
|
382
352
|
|
|
383
353
|
// services/role.service.ts
|
|
384
|
-
var import_http3 = require(
|
|
385
|
-
var import_internal3 = require(
|
|
354
|
+
var import_http3 = require("@forklaunch/core/http");
|
|
355
|
+
var import_internal3 = require("@forklaunch/internal");
|
|
386
356
|
var BaseRoleService = class {
|
|
387
357
|
constructor(em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
388
358
|
this.em = em;
|
|
389
359
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
390
360
|
this.schemaValidator = schemaValidator;
|
|
391
361
|
this.mappers = mappers;
|
|
392
|
-
this._mappers = (0, import_internal3.transformIntoInternalMapper)(
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
: {
|
|
399
|
-
logging: false,
|
|
400
|
-
metrics: false,
|
|
401
|
-
tracing: false
|
|
402
|
-
};
|
|
362
|
+
this._mappers = (0, import_internal3.transformIntoInternalMapper)(mappers, schemaValidator);
|
|
363
|
+
this.evaluatedTelemetryOptions = options?.telemetry ? (0, import_http3.evaluateTelemetryOptions)(options.telemetry).enabled : {
|
|
364
|
+
logging: false,
|
|
365
|
+
metrics: false,
|
|
366
|
+
tracing: false
|
|
367
|
+
};
|
|
403
368
|
}
|
|
404
369
|
_mappers;
|
|
405
370
|
evaluatedTelemetryOptions;
|
|
406
371
|
async createRole(roleDto, em) {
|
|
407
372
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
408
|
-
this.openTelemetryCollector.info(
|
|
373
|
+
this.openTelemetryCollector.info("Creating role", roleDto);
|
|
409
374
|
}
|
|
410
375
|
const role = await this._mappers.CreateRoleMapper.deserializeDtoToEntity(
|
|
411
376
|
roleDto,
|
|
@@ -420,11 +385,11 @@ var BaseRoleService = class {
|
|
|
420
385
|
}
|
|
421
386
|
async createBatchRoles(roleDtos, em) {
|
|
422
387
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
423
|
-
this.openTelemetryCollector.info(
|
|
388
|
+
this.openTelemetryCollector.info("Creating batch roles", roleDtos);
|
|
424
389
|
}
|
|
425
390
|
const roles = await Promise.all(
|
|
426
|
-
roleDtos.map(
|
|
427
|
-
this._mappers.CreateRoleMapper.deserializeDtoToEntity(
|
|
391
|
+
roleDtos.map(
|
|
392
|
+
async (roleDto) => this._mappers.CreateRoleMapper.deserializeDtoToEntity(
|
|
428
393
|
roleDto,
|
|
429
394
|
em ?? this.em
|
|
430
395
|
)
|
|
@@ -441,34 +406,38 @@ var BaseRoleService = class {
|
|
|
441
406
|
}
|
|
442
407
|
async getRole({ id }, em) {
|
|
443
408
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
444
|
-
this.openTelemetryCollector.info(
|
|
409
|
+
this.openTelemetryCollector.info("Getting role", { id });
|
|
445
410
|
}
|
|
446
|
-
const role = await (em ?? this.em).findOneOrFail(
|
|
447
|
-
populate: [
|
|
411
|
+
const role = await (em ?? this.em).findOneOrFail("Role", id, {
|
|
412
|
+
populate: ["id", "*"]
|
|
448
413
|
});
|
|
449
|
-
return this._mappers.RoleMapper.serializeEntityToDto(
|
|
414
|
+
return this._mappers.RoleMapper.serializeEntityToDto(
|
|
415
|
+
role
|
|
416
|
+
);
|
|
450
417
|
}
|
|
451
418
|
async getBatchRoles({ ids }, em) {
|
|
452
419
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
453
|
-
this.openTelemetryCollector.info(
|
|
420
|
+
this.openTelemetryCollector.info("Getting batch roles", { ids });
|
|
454
421
|
}
|
|
455
422
|
return Promise.all(
|
|
456
|
-
(
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
{
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
423
|
+
(await (em ?? this.em).find(
|
|
424
|
+
"Role",
|
|
425
|
+
{
|
|
426
|
+
id: { $in: ids }
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
populate: ["id", "*"]
|
|
430
|
+
}
|
|
431
|
+
)).map(
|
|
432
|
+
(role) => this._mappers.RoleMapper.serializeEntityToDto(
|
|
433
|
+
role
|
|
465
434
|
)
|
|
466
|
-
)
|
|
435
|
+
)
|
|
467
436
|
);
|
|
468
437
|
}
|
|
469
438
|
async updateRole(roleDto, em) {
|
|
470
439
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
471
|
-
this.openTelemetryCollector.info(
|
|
440
|
+
this.openTelemetryCollector.info("Updating role", roleDto);
|
|
472
441
|
}
|
|
473
442
|
const role = await this._mappers.UpdateRoleMapper.deserializeDtoToEntity(
|
|
474
443
|
roleDto,
|
|
@@ -483,11 +452,11 @@ var BaseRoleService = class {
|
|
|
483
452
|
}
|
|
484
453
|
async updateBatchRoles(roleDtos, em) {
|
|
485
454
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
486
|
-
this.openTelemetryCollector.info(
|
|
455
|
+
this.openTelemetryCollector.info("Updating batch roles", roleDtos);
|
|
487
456
|
}
|
|
488
457
|
const roles = await Promise.all(
|
|
489
|
-
roleDtos.map(
|
|
490
|
-
this._mappers.UpdateRoleMapper.deserializeDtoToEntity(
|
|
458
|
+
roleDtos.map(
|
|
459
|
+
async (roleDto) => this._mappers.UpdateRoleMapper.deserializeDtoToEntity(
|
|
491
460
|
roleDto,
|
|
492
461
|
em ?? this.em
|
|
493
462
|
)
|
|
@@ -499,37 +468,32 @@ var BaseRoleService = class {
|
|
|
499
468
|
await this.em.persistAndFlush(roles);
|
|
500
469
|
}
|
|
501
470
|
return Promise.all(
|
|
502
|
-
roles.map(
|
|
471
|
+
roles.map(
|
|
472
|
+
(role) => this._mappers.RoleMapper.serializeEntityToDto(
|
|
473
|
+
role
|
|
474
|
+
)
|
|
475
|
+
)
|
|
503
476
|
);
|
|
504
477
|
}
|
|
505
478
|
async deleteRole(idDto, em) {
|
|
506
479
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
507
|
-
this.openTelemetryCollector.info(
|
|
480
|
+
this.openTelemetryCollector.info("Deleting role", idDto);
|
|
508
481
|
}
|
|
509
|
-
await (em ?? this.em).nativeDelete(
|
|
482
|
+
await (em ?? this.em).nativeDelete("Role", idDto);
|
|
510
483
|
}
|
|
511
484
|
async deleteBatchRoles(idsDto, em) {
|
|
512
485
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
513
|
-
this.openTelemetryCollector.info(
|
|
486
|
+
this.openTelemetryCollector.info("Deleting batch roles", idsDto);
|
|
514
487
|
}
|
|
515
|
-
await (em ?? this.em).nativeDelete(
|
|
488
|
+
await (em ?? this.em).nativeDelete("Role", { id: { $in: idsDto.ids } });
|
|
516
489
|
}
|
|
517
490
|
};
|
|
518
491
|
|
|
519
492
|
// services/user.service.ts
|
|
520
|
-
var import_http4 = require(
|
|
521
|
-
var import_internal4 = require(
|
|
493
|
+
var import_http4 = require("@forklaunch/core/http");
|
|
494
|
+
var import_internal4 = require("@forklaunch/internal");
|
|
522
495
|
var BaseUserService = class {
|
|
523
|
-
constructor(
|
|
524
|
-
em,
|
|
525
|
-
passwordEncryptionPublicKeyPath,
|
|
526
|
-
roleServiceFactory,
|
|
527
|
-
organizationServiceFactory,
|
|
528
|
-
openTelemetryCollector,
|
|
529
|
-
schemaValidator,
|
|
530
|
-
mappers,
|
|
531
|
-
options
|
|
532
|
-
) {
|
|
496
|
+
constructor(em, passwordEncryptionPublicKeyPath, roleServiceFactory, organizationServiceFactory, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
533
497
|
this.em = em;
|
|
534
498
|
this.passwordEncryptionPublicKeyPath = passwordEncryptionPublicKeyPath;
|
|
535
499
|
this.roleServiceFactory = roleServiceFactory;
|
|
@@ -538,23 +502,18 @@ var BaseUserService = class {
|
|
|
538
502
|
this.schemaValidator = schemaValidator;
|
|
539
503
|
this.mappers = mappers;
|
|
540
504
|
this.options = options;
|
|
541
|
-
this._mappers = (0, import_internal4.transformIntoInternalMapper)(
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
: {
|
|
548
|
-
logging: false,
|
|
549
|
-
metrics: false,
|
|
550
|
-
tracing: false
|
|
551
|
-
};
|
|
505
|
+
this._mappers = (0, import_internal4.transformIntoInternalMapper)(mappers, schemaValidator);
|
|
506
|
+
this.evaluatedTelemetryOptions = options?.telemetry ? (0, import_http4.evaluateTelemetryOptions)(options.telemetry).enabled : {
|
|
507
|
+
logging: false,
|
|
508
|
+
metrics: false,
|
|
509
|
+
tracing: false
|
|
510
|
+
};
|
|
552
511
|
}
|
|
553
512
|
_mappers;
|
|
554
513
|
evaluatedTelemetryOptions;
|
|
555
514
|
async createUser(userDto, em) {
|
|
556
515
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
557
|
-
this.openTelemetryCollector.info(
|
|
516
|
+
this.openTelemetryCollector.info("Creating user", userDto);
|
|
558
517
|
}
|
|
559
518
|
const user = await this._mappers.CreateUserMapper.deserializeDtoToEntity(
|
|
560
519
|
userDto,
|
|
@@ -569,11 +528,11 @@ var BaseUserService = class {
|
|
|
569
528
|
}
|
|
570
529
|
async createBatchUsers(userDtos, em) {
|
|
571
530
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
572
|
-
this.openTelemetryCollector.info(
|
|
531
|
+
this.openTelemetryCollector.info("Creating batch users", userDtos);
|
|
573
532
|
}
|
|
574
533
|
const users = await Promise.all(
|
|
575
|
-
userDtos.map(
|
|
576
|
-
this._mappers.CreateUserMapper.deserializeDtoToEntity(
|
|
534
|
+
userDtos.map(
|
|
535
|
+
async (createUserDto) => this._mappers.CreateUserMapper.deserializeDtoToEntity(
|
|
577
536
|
createUserDto,
|
|
578
537
|
em ?? this.em
|
|
579
538
|
)
|
|
@@ -590,28 +549,32 @@ var BaseUserService = class {
|
|
|
590
549
|
}
|
|
591
550
|
async getUser(idDto, em) {
|
|
592
551
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
593
|
-
this.openTelemetryCollector.info(
|
|
552
|
+
this.openTelemetryCollector.info("Getting user", idDto);
|
|
594
553
|
}
|
|
595
|
-
const user = await (em ?? this.em).findOneOrFail(
|
|
596
|
-
populate: [
|
|
554
|
+
const user = await (em ?? this.em).findOneOrFail("User", idDto, {
|
|
555
|
+
populate: ["id", "*"]
|
|
597
556
|
});
|
|
598
|
-
return this._mappers.UserMapper.serializeEntityToDto(
|
|
557
|
+
return this._mappers.UserMapper.serializeEntityToDto(
|
|
558
|
+
user
|
|
559
|
+
);
|
|
599
560
|
}
|
|
600
561
|
async getBatchUsers(idsDto, em) {
|
|
601
562
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
602
|
-
this.openTelemetryCollector.info(
|
|
563
|
+
this.openTelemetryCollector.info("Getting batch users", idsDto);
|
|
603
564
|
}
|
|
604
565
|
return Promise.all(
|
|
605
|
-
(
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
566
|
+
(await (em ?? this.em).find("User", idsDto, {
|
|
567
|
+
populate: ["id", "*"]
|
|
568
|
+
})).map(
|
|
569
|
+
(user) => this._mappers.UserMapper.serializeEntityToDto(
|
|
570
|
+
user
|
|
571
|
+
)
|
|
572
|
+
)
|
|
610
573
|
);
|
|
611
574
|
}
|
|
612
575
|
async updateUser(userDto, em) {
|
|
613
576
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
614
|
-
this.openTelemetryCollector.info(
|
|
577
|
+
this.openTelemetryCollector.info("Updating user", userDto);
|
|
615
578
|
}
|
|
616
579
|
const user = await this._mappers.UpdateUserMapper.deserializeDtoToEntity(
|
|
617
580
|
userDto,
|
|
@@ -626,11 +589,11 @@ var BaseUserService = class {
|
|
|
626
589
|
}
|
|
627
590
|
async updateBatchUsers(userDtos, em) {
|
|
628
591
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
629
|
-
this.openTelemetryCollector.info(
|
|
592
|
+
this.openTelemetryCollector.info("Updating batch users", userDtos);
|
|
630
593
|
}
|
|
631
594
|
const users = await Promise.all(
|
|
632
|
-
userDtos.map(
|
|
633
|
-
this._mappers.UpdateUserMapper.deserializeDtoToEntity(
|
|
595
|
+
userDtos.map(
|
|
596
|
+
async (updateUserDto) => this._mappers.UpdateUserMapper.deserializeDtoToEntity(
|
|
634
597
|
updateUserDto,
|
|
635
598
|
em ?? this.em
|
|
636
599
|
)
|
|
@@ -647,46 +610,39 @@ var BaseUserService = class {
|
|
|
647
610
|
}
|
|
648
611
|
async deleteUser(idDto, em) {
|
|
649
612
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
650
|
-
this.openTelemetryCollector.info(
|
|
613
|
+
this.openTelemetryCollector.info("Deleting user", idDto);
|
|
651
614
|
}
|
|
652
|
-
await (em ?? this.em).nativeDelete(
|
|
615
|
+
await (em ?? this.em).nativeDelete("User", idDto);
|
|
653
616
|
}
|
|
654
617
|
async deleteBatchUsers(idsDto, em) {
|
|
655
618
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
656
|
-
this.openTelemetryCollector.info(
|
|
619
|
+
this.openTelemetryCollector.info("Deleting batch users", idsDto);
|
|
657
620
|
}
|
|
658
|
-
await (em ?? this.em).nativeDelete(
|
|
621
|
+
await (em ?? this.em).nativeDelete("User", idsDto);
|
|
659
622
|
}
|
|
660
623
|
async verifyHasRole(idDto, roleId) {
|
|
661
624
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
662
|
-
this.openTelemetryCollector.info(
|
|
625
|
+
this.openTelemetryCollector.info("Verifying user has role", {
|
|
663
626
|
idDto,
|
|
664
627
|
roleId
|
|
665
628
|
});
|
|
666
629
|
}
|
|
667
630
|
const user = await this.getUser(idDto);
|
|
668
|
-
if (
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
}).length === 0
|
|
672
|
-
) {
|
|
631
|
+
if (user.roles.filter((role) => {
|
|
632
|
+
return roleId == role.id;
|
|
633
|
+
}).length === 0) {
|
|
673
634
|
throw new Error(`User ${idDto.id} does not have role ${roleId}`);
|
|
674
635
|
}
|
|
675
636
|
}
|
|
676
637
|
async verifyHasPermission(idDto, permissionId) {
|
|
677
638
|
if (this.evaluatedTelemetryOptions.logging) {
|
|
678
|
-
this.openTelemetryCollector.info(
|
|
639
|
+
this.openTelemetryCollector.info("Verifying user has permission", {
|
|
679
640
|
idDto,
|
|
680
641
|
permissionId
|
|
681
642
|
});
|
|
682
643
|
}
|
|
683
644
|
const user = await this.getUser(idDto);
|
|
684
|
-
if (
|
|
685
|
-
user.roles
|
|
686
|
-
.map((role) => role.permissions.map((permission) => permission.id))
|
|
687
|
-
.flat()
|
|
688
|
-
.filter((id) => id == permissionId).length === 0
|
|
689
|
-
) {
|
|
645
|
+
if (user.roles.map((role) => role.permissions.map((permission) => permission.id)).flat().filter((id) => id == permissionId).length === 0) {
|
|
690
646
|
throw new Error(
|
|
691
647
|
`User ${idDto.id} does not have permission ${permissionId}`
|
|
692
648
|
);
|
|
@@ -694,10 +650,9 @@ var BaseUserService = class {
|
|
|
694
650
|
}
|
|
695
651
|
};
|
|
696
652
|
// Annotate the CommonJS export names for ESM import in node:
|
|
697
|
-
0 &&
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
});
|
|
653
|
+
0 && (module.exports = {
|
|
654
|
+
BaseOrganizationService,
|
|
655
|
+
BasePermissionService,
|
|
656
|
+
BaseRoleService,
|
|
657
|
+
BaseUserService
|
|
658
|
+
});
|