@forklaunch/implementation-iam-base 0.2.3 → 0.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.
- package/lib/schemas/index.d.mts +474 -0
- package/lib/schemas/index.d.ts +474 -5
- package/lib/schemas/index.js +339 -4
- package/lib/schemas/index.mjs +369 -0
- package/lib/services/index.d.mts +203 -0
- package/lib/services/index.d.ts +203 -5
- package/lib/services/index.js +666 -4
- package/lib/services/index.mjs +652 -0
- package/package.json +6 -5
- package/lib/__test__/schemaEquality.test.d.ts +0 -2
- package/lib/__test__/schemaEquality.test.d.ts.map +0 -1
- package/lib/__test__/schemaEquality.test.js +0 -283
- package/lib/jest.config.d.ts +0 -4
- package/lib/jest.config.d.ts.map +0 -1
- package/lib/jest.config.js +0 -19
- package/lib/schemas/index.d.ts.map +0 -1
- package/lib/schemas/organization.schema.d.ts +0 -423
- package/lib/schemas/organization.schema.d.ts.map +0 -1
- package/lib/schemas/organization.schema.js +0 -7
- package/lib/schemas/permission.schema.d.ts +0 -104
- package/lib/schemas/permission.schema.d.ts.map +0 -1
- package/lib/schemas/permission.schema.js +0 -7
- package/lib/schemas/role.schema.d.ts +0 -163
- package/lib/schemas/role.schema.d.ts.map +0 -1
- package/lib/schemas/role.schema.js +0 -7
- package/lib/schemas/typebox/organization.schema.d.ts +0 -382
- package/lib/schemas/typebox/organization.schema.d.ts.map +0 -1
- package/lib/schemas/typebox/organization.schema.js +0 -44
- package/lib/schemas/typebox/permission.schema.d.ts +0 -123
- package/lib/schemas/typebox/permission.schema.d.ts.map +0 -1
- package/lib/schemas/typebox/permission.schema.js +0 -32
- package/lib/schemas/typebox/role.schema.d.ts +0 -183
- package/lib/schemas/typebox/role.schema.d.ts.map +0 -1
- package/lib/schemas/typebox/role.schema.js +0 -33
- package/lib/schemas/typebox/user.schema.d.ts +0 -315
- package/lib/schemas/typebox/user.schema.d.ts.map +0 -1
- package/lib/schemas/typebox/user.schema.js +0 -49
- package/lib/schemas/user.schema.d.ts +0 -298
- package/lib/schemas/user.schema.d.ts.map +0 -1
- package/lib/schemas/user.schema.js +0 -7
- package/lib/schemas/zod/organization.schema.d.ts +0 -418
- package/lib/schemas/zod/organization.schema.d.ts.map +0 -1
- package/lib/schemas/zod/organization.schema.js +0 -44
- package/lib/schemas/zod/permission.schema.d.ts +0 -71
- package/lib/schemas/zod/permission.schema.d.ts.map +0 -1
- package/lib/schemas/zod/permission.schema.js +0 -32
- package/lib/schemas/zod/role.schema.d.ts +0 -129
- package/lib/schemas/zod/role.schema.d.ts.map +0 -1
- package/lib/schemas/zod/role.schema.js +0 -33
- package/lib/schemas/zod/user.schema.d.ts +0 -249
- package/lib/schemas/zod/user.schema.d.ts.map +0 -1
- package/lib/schemas/zod/user.schema.js +0 -49
- package/lib/services/index.d.ts.map +0 -1
- package/lib/services/organization.service.d.ts +0 -123
- package/lib/services/organization.service.d.ts.map +0 -1
- package/lib/services/organization.service.js +0 -88
- package/lib/services/permission.service.d.ts +0 -149
- package/lib/services/permission.service.d.ts.map +0 -1
- package/lib/services/permission.service.js +0 -264
- package/lib/services/role.service.d.ts +0 -123
- package/lib/services/role.service.d.ts.map +0 -1
- package/lib/services/role.service.js +0 -139
- package/lib/services/user.service.d.ts +0 -134
- package/lib/services/user.service.d.ts.map +0 -1
- package/lib/services/user.service.js +0 -185
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/lib/vitest.config.d.ts +0 -3
- package/lib/vitest.config.d.ts.map +0 -1
- package/lib/vitest.config.js +0 -7
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PermissionService,
|
|
3
|
-
RoleService
|
|
4
|
-
} from '@forklaunch/interfaces-iam/interfaces';
|
|
5
|
-
import { IdDto, IdsDto } from '@forklaunch/common';
|
|
6
|
-
import {
|
|
7
|
-
MetricsDefinition,
|
|
8
|
-
OpenTelemetryCollector,
|
|
9
|
-
TelemetryOptions
|
|
10
|
-
} from '@forklaunch/core/http';
|
|
11
|
-
import {
|
|
12
|
-
RequestDtoMapperConstructor,
|
|
13
|
-
ResponseDtoMapperConstructor
|
|
14
|
-
} from '@forklaunch/core/mappers';
|
|
15
|
-
import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
|
|
16
|
-
import {
|
|
17
|
-
CreatePermissionDto,
|
|
18
|
-
PermissionDto,
|
|
19
|
-
UpdatePermissionDto,
|
|
20
|
-
UpdateRoleDto
|
|
21
|
-
} from '@forklaunch/interfaces-iam/types';
|
|
22
|
-
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
23
|
-
import { EntityManager } from '@mikro-orm/core';
|
|
24
|
-
export declare class BasePermissionService<
|
|
25
|
-
SchemaValidator extends AnySchemaValidator,
|
|
26
|
-
Metrics extends MetricsDefinition = MetricsDefinition,
|
|
27
|
-
Dto extends {
|
|
28
|
-
PermissionDtoMapper: PermissionDto;
|
|
29
|
-
CreatePermissionDtoMapper: CreatePermissionDto;
|
|
30
|
-
UpdatePermissionDtoMapper: UpdatePermissionDto;
|
|
31
|
-
RoleEntityMapper: UpdateRoleDto;
|
|
32
|
-
} = {
|
|
33
|
-
PermissionDtoMapper: PermissionDto;
|
|
34
|
-
CreatePermissionDtoMapper: CreatePermissionDto;
|
|
35
|
-
UpdatePermissionDtoMapper: UpdatePermissionDto;
|
|
36
|
-
RoleEntityMapper: UpdateRoleDto;
|
|
37
|
-
},
|
|
38
|
-
Entities extends {
|
|
39
|
-
PermissionDtoMapper: PermissionDto;
|
|
40
|
-
CreatePermissionDtoMapper: PermissionDto;
|
|
41
|
-
UpdatePermissionDtoMapper: PermissionDto;
|
|
42
|
-
RoleEntityMapper: MapNestedDtoArraysToCollections<
|
|
43
|
-
UpdateRoleDto,
|
|
44
|
-
'permissions'
|
|
45
|
-
>;
|
|
46
|
-
} = {
|
|
47
|
-
PermissionDtoMapper: PermissionDto;
|
|
48
|
-
CreatePermissionDtoMapper: PermissionDto;
|
|
49
|
-
UpdatePermissionDtoMapper: PermissionDto;
|
|
50
|
-
RoleEntityMapper: MapNestedDtoArraysToCollections<
|
|
51
|
-
UpdateRoleDto,
|
|
52
|
-
'permissions'
|
|
53
|
-
>;
|
|
54
|
-
}
|
|
55
|
-
> implements PermissionService
|
|
56
|
-
{
|
|
57
|
-
#private;
|
|
58
|
-
em: EntityManager;
|
|
59
|
-
protected roleServiceFactory: () => RoleService;
|
|
60
|
-
protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
|
|
61
|
-
protected schemaValidator: SchemaValidator;
|
|
62
|
-
protected mappers: {
|
|
63
|
-
PermissionDtoMapper: ResponseDtoMapperConstructor<
|
|
64
|
-
SchemaValidator,
|
|
65
|
-
Dto['PermissionDtoMapper'],
|
|
66
|
-
Entities['PermissionDtoMapper']
|
|
67
|
-
>;
|
|
68
|
-
CreatePermissionDtoMapper: RequestDtoMapperConstructor<
|
|
69
|
-
SchemaValidator,
|
|
70
|
-
Dto['CreatePermissionDtoMapper'],
|
|
71
|
-
Entities['CreatePermissionDtoMapper']
|
|
72
|
-
>;
|
|
73
|
-
UpdatePermissionDtoMapper: RequestDtoMapperConstructor<
|
|
74
|
-
SchemaValidator,
|
|
75
|
-
Dto['UpdatePermissionDtoMapper'],
|
|
76
|
-
Entities['UpdatePermissionDtoMapper']
|
|
77
|
-
>;
|
|
78
|
-
RoleEntityMapper: RequestDtoMapperConstructor<
|
|
79
|
-
SchemaValidator,
|
|
80
|
-
Dto['RoleEntityMapper'],
|
|
81
|
-
Entities['RoleEntityMapper']
|
|
82
|
-
>;
|
|
83
|
-
};
|
|
84
|
-
private evaluatedTelemetryOptions;
|
|
85
|
-
constructor(
|
|
86
|
-
em: EntityManager,
|
|
87
|
-
roleServiceFactory: () => RoleService,
|
|
88
|
-
openTelemetryCollector: OpenTelemetryCollector<Metrics>,
|
|
89
|
-
schemaValidator: SchemaValidator,
|
|
90
|
-
mappers: {
|
|
91
|
-
PermissionDtoMapper: ResponseDtoMapperConstructor<
|
|
92
|
-
SchemaValidator,
|
|
93
|
-
Dto['PermissionDtoMapper'],
|
|
94
|
-
Entities['PermissionDtoMapper']
|
|
95
|
-
>;
|
|
96
|
-
CreatePermissionDtoMapper: RequestDtoMapperConstructor<
|
|
97
|
-
SchemaValidator,
|
|
98
|
-
Dto['CreatePermissionDtoMapper'],
|
|
99
|
-
Entities['CreatePermissionDtoMapper']
|
|
100
|
-
>;
|
|
101
|
-
UpdatePermissionDtoMapper: RequestDtoMapperConstructor<
|
|
102
|
-
SchemaValidator,
|
|
103
|
-
Dto['UpdatePermissionDtoMapper'],
|
|
104
|
-
Entities['UpdatePermissionDtoMapper']
|
|
105
|
-
>;
|
|
106
|
-
RoleEntityMapper: RequestDtoMapperConstructor<
|
|
107
|
-
SchemaValidator,
|
|
108
|
-
Dto['RoleEntityMapper'],
|
|
109
|
-
Entities['RoleEntityMapper']
|
|
110
|
-
>;
|
|
111
|
-
},
|
|
112
|
-
options?: {
|
|
113
|
-
telemetry?: TelemetryOptions;
|
|
114
|
-
}
|
|
115
|
-
);
|
|
116
|
-
private updateRolesWithPermissions;
|
|
117
|
-
private removePermissionsFromRoles;
|
|
118
|
-
private getBatchRoles;
|
|
119
|
-
private createPermissionDto;
|
|
120
|
-
private extractCreatePermissionDtoToEntityData;
|
|
121
|
-
createPermission(
|
|
122
|
-
createPermissionDto: Dto['CreatePermissionDtoMapper'],
|
|
123
|
-
em?: EntityManager
|
|
124
|
-
): Promise<Dto['PermissionDtoMapper']>;
|
|
125
|
-
createBatchPermissions(
|
|
126
|
-
permissionDtos: Dto['CreatePermissionDtoMapper'][],
|
|
127
|
-
em?: EntityManager
|
|
128
|
-
): Promise<Dto['PermissionDtoMapper'][]>;
|
|
129
|
-
getPermission(
|
|
130
|
-
idDto: IdDto,
|
|
131
|
-
em?: EntityManager
|
|
132
|
-
): Promise<Dto['PermissionDtoMapper']>;
|
|
133
|
-
getBatchPermissions(
|
|
134
|
-
idsDto: IdsDto,
|
|
135
|
-
em?: EntityManager
|
|
136
|
-
): Promise<Dto['PermissionDtoMapper'][]>;
|
|
137
|
-
private updatePermissionDto;
|
|
138
|
-
updatePermission(
|
|
139
|
-
permissionDto: Dto['UpdatePermissionDtoMapper'],
|
|
140
|
-
em?: EntityManager
|
|
141
|
-
): Promise<Dto['PermissionDtoMapper']>;
|
|
142
|
-
updateBatchPermissions(
|
|
143
|
-
permissionDtos: Dto['UpdatePermissionDtoMapper'][],
|
|
144
|
-
em?: EntityManager
|
|
145
|
-
): Promise<Dto['PermissionDtoMapper'][]>;
|
|
146
|
-
deletePermission(idDto: IdDto, em?: EntityManager): Promise<void>;
|
|
147
|
-
deleteBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<void>;
|
|
148
|
-
}
|
|
149
|
-
//# sourceMappingURL=permission.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"permission.service.d.ts","sourceRoot":"","sources":["../../services/permission.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
import { evaluateTelemetryOptions } from '@forklaunch/core/http';
|
|
2
|
-
import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
|
|
3
|
-
export class BasePermissionService {
|
|
4
|
-
em;
|
|
5
|
-
roleServiceFactory;
|
|
6
|
-
openTelemetryCollector;
|
|
7
|
-
schemaValidator;
|
|
8
|
-
mappers;
|
|
9
|
-
#mappers;
|
|
10
|
-
evaluatedTelemetryOptions;
|
|
11
|
-
constructor(
|
|
12
|
-
em,
|
|
13
|
-
roleServiceFactory,
|
|
14
|
-
openTelemetryCollector,
|
|
15
|
-
schemaValidator,
|
|
16
|
-
mappers,
|
|
17
|
-
options
|
|
18
|
-
) {
|
|
19
|
-
this.em = em;
|
|
20
|
-
this.roleServiceFactory = roleServiceFactory;
|
|
21
|
-
this.openTelemetryCollector = openTelemetryCollector;
|
|
22
|
-
this.schemaValidator = schemaValidator;
|
|
23
|
-
this.mappers = mappers;
|
|
24
|
-
this.#mappers = transformIntoInternalDtoMapper(mappers, schemaValidator);
|
|
25
|
-
this.evaluatedTelemetryOptions = options?.telemetry
|
|
26
|
-
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
27
|
-
: {
|
|
28
|
-
logging: false,
|
|
29
|
-
metrics: false,
|
|
30
|
-
tracing: false
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
// start: global helper functions
|
|
34
|
-
async updateRolesWithPermissions(roles, permissions) {
|
|
35
|
-
return Promise.all(
|
|
36
|
-
roles.map(async (role) => {
|
|
37
|
-
permissions.forEach((permission) => role.permissions.add(permission));
|
|
38
|
-
return role;
|
|
39
|
-
})
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
async removePermissionsFromRoles(roles, permissions) {
|
|
43
|
-
return Promise.all(
|
|
44
|
-
roles.map(async (role) => {
|
|
45
|
-
permissions.forEach((permission) =>
|
|
46
|
-
role.permissions.remove(permission)
|
|
47
|
-
);
|
|
48
|
-
return role;
|
|
49
|
-
})
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
async getBatchRoles(roleIds, em) {
|
|
53
|
-
return roleIds
|
|
54
|
-
? await Promise.all(
|
|
55
|
-
(await this.roleServiceFactory().getBatchRoles(roleIds, em)).map(
|
|
56
|
-
async (role) => {
|
|
57
|
-
return (em ?? this.em).merge(
|
|
58
|
-
await this.#mappers.RoleEntityMapper.deserializeDtoToEntity(
|
|
59
|
-
role,
|
|
60
|
-
em ?? this.em
|
|
61
|
-
)
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
)
|
|
65
|
-
)
|
|
66
|
-
: [];
|
|
67
|
-
}
|
|
68
|
-
// end: global helper functions
|
|
69
|
-
// start: createPermission helper functions
|
|
70
|
-
async createPermissionDto({ permission, addToRoles }) {
|
|
71
|
-
let roles = [];
|
|
72
|
-
if (addToRoles) {
|
|
73
|
-
roles = await this.updateRolesWithPermissions(addToRoles, [permission]);
|
|
74
|
-
}
|
|
75
|
-
return { permission, roles };
|
|
76
|
-
}
|
|
77
|
-
async extractCreatePermissionDtoToEntityData(permissionDto, em) {
|
|
78
|
-
return {
|
|
79
|
-
permission: (em ?? this.em).merge(
|
|
80
|
-
await this.#mappers.CreatePermissionDtoMapper.deserializeDtoToEntity(
|
|
81
|
-
permissionDto,
|
|
82
|
-
em ?? this.em
|
|
83
|
-
)
|
|
84
|
-
),
|
|
85
|
-
addToRoles: permissionDto.addToRolesIds
|
|
86
|
-
? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
|
|
87
|
-
: []
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
// end: createPermission helper functions
|
|
91
|
-
async createPermission(createPermissionDto, em) {
|
|
92
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
93
|
-
this.openTelemetryCollector.info(
|
|
94
|
-
'Creating permission',
|
|
95
|
-
createPermissionDto
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
const { permission, roles } = await this.createPermissionDto(
|
|
99
|
-
await this.extractCreatePermissionDtoToEntityData(createPermissionDto, em)
|
|
100
|
-
);
|
|
101
|
-
if (em) {
|
|
102
|
-
await em.persist([permission, ...roles]);
|
|
103
|
-
} else {
|
|
104
|
-
await this.em.persistAndFlush([permission, ...roles]);
|
|
105
|
-
}
|
|
106
|
-
return this.#mappers.PermissionDtoMapper.serializeEntityToDto(permission);
|
|
107
|
-
}
|
|
108
|
-
async createBatchPermissions(permissionDtos, em) {
|
|
109
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
110
|
-
this.openTelemetryCollector.info(
|
|
111
|
-
'Creating batch permissions',
|
|
112
|
-
permissionDtos
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
const rolesCache = {};
|
|
116
|
-
const permissions = [];
|
|
117
|
-
permissionDtos.map(async (createPermissionDto) => {
|
|
118
|
-
const { permission, roles } = await this.createPermissionDto(
|
|
119
|
-
await this.extractCreatePermissionDtoToEntityData(
|
|
120
|
-
createPermissionDto,
|
|
121
|
-
em
|
|
122
|
-
)
|
|
123
|
-
);
|
|
124
|
-
roles.forEach((role) => {
|
|
125
|
-
if (
|
|
126
|
-
rolesCache[role.id] &&
|
|
127
|
-
role.permissions !== rolesCache[role.id].permissions
|
|
128
|
-
) {
|
|
129
|
-
role.permissions.getItems().forEach((permission) => {
|
|
130
|
-
if (!rolesCache[role.id].permissions.contains(permission)) {
|
|
131
|
-
rolesCache[role.id].permissions.add(permission);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
} else {
|
|
135
|
-
rolesCache[role.id] = role;
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
permissions.push(permission);
|
|
139
|
-
});
|
|
140
|
-
const entities = [...permissions, ...Object.values(rolesCache)];
|
|
141
|
-
if (em) {
|
|
142
|
-
await em.persist(entities);
|
|
143
|
-
} else {
|
|
144
|
-
await this.em.persistAndFlush(entities);
|
|
145
|
-
}
|
|
146
|
-
return Promise.all(
|
|
147
|
-
permissions.map(async (permission) =>
|
|
148
|
-
this.#mappers.PermissionDtoMapper.serializeEntityToDto(permission)
|
|
149
|
-
)
|
|
150
|
-
);
|
|
151
|
-
}
|
|
152
|
-
async getPermission(idDto, em) {
|
|
153
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
154
|
-
this.openTelemetryCollector.info('Getting permission', idDto);
|
|
155
|
-
}
|
|
156
|
-
const permission = await (em ?? this.em).findOneOrFail('Permission', idDto);
|
|
157
|
-
return this.#mappers.PermissionDtoMapper.serializeEntityToDto(permission);
|
|
158
|
-
}
|
|
159
|
-
async getBatchPermissions(idsDto, em) {
|
|
160
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
161
|
-
this.openTelemetryCollector.info('Getting batch permissions', idsDto);
|
|
162
|
-
}
|
|
163
|
-
return Promise.all(
|
|
164
|
-
(await (em ?? this.em).find('Permission', idsDto)).map((permission) =>
|
|
165
|
-
this.#mappers.PermissionDtoMapper.serializeEntityToDto(permission)
|
|
166
|
-
)
|
|
167
|
-
);
|
|
168
|
-
}
|
|
169
|
-
// start: updatePermission helper functions
|
|
170
|
-
updatePermissionDto = async (permissionDto, em) => {
|
|
171
|
-
const permission =
|
|
172
|
-
await this.#mappers.UpdatePermissionDtoMapper.deserializeDtoToEntity(
|
|
173
|
-
permissionDto,
|
|
174
|
-
em ?? this.em
|
|
175
|
-
);
|
|
176
|
-
const addToRoles = permissionDto.addToRolesIds
|
|
177
|
-
? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
|
|
178
|
-
: [];
|
|
179
|
-
const removeFromRoles = permissionDto.removeFromRolesIds
|
|
180
|
-
? await this.getBatchRoles({ ids: permissionDto.removeFromRolesIds }, em)
|
|
181
|
-
: [];
|
|
182
|
-
let roles = [];
|
|
183
|
-
roles = roles.concat(
|
|
184
|
-
await this.updateRolesWithPermissions(addToRoles, [permission])
|
|
185
|
-
);
|
|
186
|
-
roles = roles.concat(
|
|
187
|
-
await this.removePermissionsFromRoles(removeFromRoles, [permission])
|
|
188
|
-
);
|
|
189
|
-
return {
|
|
190
|
-
permission,
|
|
191
|
-
roles
|
|
192
|
-
};
|
|
193
|
-
};
|
|
194
|
-
// end: updatePermission helper functions
|
|
195
|
-
async updatePermission(permissionDto, em) {
|
|
196
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
197
|
-
this.openTelemetryCollector.info('Updating permission', permissionDto);
|
|
198
|
-
}
|
|
199
|
-
const { permission, roles } = await this.updatePermissionDto(permissionDto);
|
|
200
|
-
const entities = await (em ?? this.em).upsertMany([permission, ...roles]);
|
|
201
|
-
if (em) {
|
|
202
|
-
await em.persist(entities);
|
|
203
|
-
} else {
|
|
204
|
-
await this.em.persistAndFlush(entities);
|
|
205
|
-
}
|
|
206
|
-
return this.#mappers.PermissionDtoMapper.serializeEntityToDto(permission);
|
|
207
|
-
}
|
|
208
|
-
async updateBatchPermissions(permissionDtos, em) {
|
|
209
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
210
|
-
this.openTelemetryCollector.info(
|
|
211
|
-
'Updating batch permissions',
|
|
212
|
-
permissionDtos
|
|
213
|
-
);
|
|
214
|
-
}
|
|
215
|
-
const rolesCache = {};
|
|
216
|
-
const permissions = [];
|
|
217
|
-
await (em ?? this.em).transactional(async (em) => {
|
|
218
|
-
permissionDtos.map(async (updatePermissionDto) => {
|
|
219
|
-
const { permission, roles } =
|
|
220
|
-
await this.updatePermissionDto(updatePermissionDto);
|
|
221
|
-
roles.forEach((role) => {
|
|
222
|
-
if (
|
|
223
|
-
rolesCache[role.id] &&
|
|
224
|
-
role.permissions !== rolesCache[role.id].permissions
|
|
225
|
-
) {
|
|
226
|
-
role.permissions.getItems().forEach((permission) => {
|
|
227
|
-
if (!rolesCache[role.id].permissions.contains(permission)) {
|
|
228
|
-
rolesCache[role.id].permissions.add(permission);
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
} else {
|
|
232
|
-
rolesCache[role.id] = role;
|
|
233
|
-
}
|
|
234
|
-
});
|
|
235
|
-
permissions.push(permission);
|
|
236
|
-
});
|
|
237
|
-
const entities = [...permissions, ...Object.values(rolesCache)];
|
|
238
|
-
if (em) {
|
|
239
|
-
await em.persist(entities);
|
|
240
|
-
} else {
|
|
241
|
-
await this.em.persistAndFlush(entities);
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
return Promise.all(
|
|
245
|
-
permissions.map((permission) =>
|
|
246
|
-
this.#mappers.PermissionDtoMapper.serializeEntityToDto(permission)
|
|
247
|
-
)
|
|
248
|
-
);
|
|
249
|
-
}
|
|
250
|
-
async deletePermission(idDto, em) {
|
|
251
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
252
|
-
this.openTelemetryCollector.info('Deleting permission', idDto);
|
|
253
|
-
}
|
|
254
|
-
await (em ?? this.em).nativeDelete('Permission', idDto);
|
|
255
|
-
}
|
|
256
|
-
async deleteBatchPermissions(idsDto, em) {
|
|
257
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
258
|
-
this.openTelemetryCollector.info('Deleting batch permissions', idsDto);
|
|
259
|
-
}
|
|
260
|
-
await (em ?? this.em).nativeDelete('Permission', {
|
|
261
|
-
id: { $in: idsDto.ids }
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MetricsDefinition,
|
|
3
|
-
OpenTelemetryCollector,
|
|
4
|
-
TelemetryOptions
|
|
5
|
-
} from '@forklaunch/core/http';
|
|
6
|
-
import { RoleService } from '@forklaunch/interfaces-iam/interfaces';
|
|
7
|
-
import { EntityManager } from '@mikro-orm/core';
|
|
8
|
-
import { IdDto, IdsDto } from '@forklaunch/common';
|
|
9
|
-
import {
|
|
10
|
-
RequestDtoMapperConstructor,
|
|
11
|
-
ResponseDtoMapperConstructor
|
|
12
|
-
} from '@forklaunch/core/mappers';
|
|
13
|
-
import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
|
|
14
|
-
import {
|
|
15
|
-
CreateRoleDto,
|
|
16
|
-
RoleDto,
|
|
17
|
-
UpdateRoleDto
|
|
18
|
-
} from '@forklaunch/interfaces-iam/types';
|
|
19
|
-
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
20
|
-
export declare class BaseRoleService<
|
|
21
|
-
SchemaValidator extends AnySchemaValidator,
|
|
22
|
-
Metrics extends MetricsDefinition = MetricsDefinition,
|
|
23
|
-
Dto extends {
|
|
24
|
-
RoleDtoMapper: RoleDto;
|
|
25
|
-
CreateRoleDtoMapper: CreateRoleDto;
|
|
26
|
-
UpdateRoleDtoMapper: UpdateRoleDto;
|
|
27
|
-
} = {
|
|
28
|
-
RoleDtoMapper: RoleDto;
|
|
29
|
-
CreateRoleDtoMapper: CreateRoleDto;
|
|
30
|
-
UpdateRoleDtoMapper: UpdateRoleDto;
|
|
31
|
-
},
|
|
32
|
-
Entities extends {
|
|
33
|
-
RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
|
|
34
|
-
CreateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
35
|
-
RoleDto,
|
|
36
|
-
'permissions'
|
|
37
|
-
>;
|
|
38
|
-
UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
39
|
-
RoleDto,
|
|
40
|
-
'permissions'
|
|
41
|
-
>;
|
|
42
|
-
} = {
|
|
43
|
-
RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
|
|
44
|
-
CreateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
45
|
-
RoleDto,
|
|
46
|
-
'permissions'
|
|
47
|
-
>;
|
|
48
|
-
UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<
|
|
49
|
-
RoleDto,
|
|
50
|
-
'permissions'
|
|
51
|
-
>;
|
|
52
|
-
}
|
|
53
|
-
> implements RoleService
|
|
54
|
-
{
|
|
55
|
-
#private;
|
|
56
|
-
em: EntityManager;
|
|
57
|
-
protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
|
|
58
|
-
protected schemaValidator: SchemaValidator;
|
|
59
|
-
protected mappers: {
|
|
60
|
-
RoleDtoMapper: ResponseDtoMapperConstructor<
|
|
61
|
-
SchemaValidator,
|
|
62
|
-
Dto['RoleDtoMapper'],
|
|
63
|
-
Entities['RoleDtoMapper']
|
|
64
|
-
>;
|
|
65
|
-
CreateRoleDtoMapper: RequestDtoMapperConstructor<
|
|
66
|
-
SchemaValidator,
|
|
67
|
-
Dto['CreateRoleDtoMapper'],
|
|
68
|
-
Entities['CreateRoleDtoMapper']
|
|
69
|
-
>;
|
|
70
|
-
UpdateRoleDtoMapper: RequestDtoMapperConstructor<
|
|
71
|
-
SchemaValidator,
|
|
72
|
-
Dto['UpdateRoleDtoMapper'],
|
|
73
|
-
Entities['UpdateRoleDtoMapper']
|
|
74
|
-
>;
|
|
75
|
-
};
|
|
76
|
-
private evaluatedTelemetryOptions;
|
|
77
|
-
constructor(
|
|
78
|
-
em: EntityManager,
|
|
79
|
-
openTelemetryCollector: OpenTelemetryCollector<Metrics>,
|
|
80
|
-
schemaValidator: SchemaValidator,
|
|
81
|
-
mappers: {
|
|
82
|
-
RoleDtoMapper: ResponseDtoMapperConstructor<
|
|
83
|
-
SchemaValidator,
|
|
84
|
-
Dto['RoleDtoMapper'],
|
|
85
|
-
Entities['RoleDtoMapper']
|
|
86
|
-
>;
|
|
87
|
-
CreateRoleDtoMapper: RequestDtoMapperConstructor<
|
|
88
|
-
SchemaValidator,
|
|
89
|
-
Dto['CreateRoleDtoMapper'],
|
|
90
|
-
Entities['CreateRoleDtoMapper']
|
|
91
|
-
>;
|
|
92
|
-
UpdateRoleDtoMapper: RequestDtoMapperConstructor<
|
|
93
|
-
SchemaValidator,
|
|
94
|
-
Dto['UpdateRoleDtoMapper'],
|
|
95
|
-
Entities['UpdateRoleDtoMapper']
|
|
96
|
-
>;
|
|
97
|
-
},
|
|
98
|
-
options?: {
|
|
99
|
-
telemetry?: TelemetryOptions;
|
|
100
|
-
}
|
|
101
|
-
);
|
|
102
|
-
createRole(
|
|
103
|
-
roleDto: Dto['CreateRoleDtoMapper'],
|
|
104
|
-
em?: EntityManager
|
|
105
|
-
): Promise<Dto['RoleDtoMapper']>;
|
|
106
|
-
createBatchRoles(
|
|
107
|
-
roleDtos: Dto['CreateRoleDtoMapper'][],
|
|
108
|
-
em?: EntityManager
|
|
109
|
-
): Promise<Dto['RoleDtoMapper'][]>;
|
|
110
|
-
getRole({ id }: IdDto, em?: EntityManager): Promise<RoleDto>;
|
|
111
|
-
getBatchRoles({ ids }: IdsDto, em?: EntityManager): Promise<RoleDto[]>;
|
|
112
|
-
updateRole(
|
|
113
|
-
roleDto: Dto['UpdateRoleDtoMapper'],
|
|
114
|
-
em?: EntityManager
|
|
115
|
-
): Promise<Dto['RoleDtoMapper']>;
|
|
116
|
-
updateBatchRoles(
|
|
117
|
-
roleDtos: Dto['UpdateRoleDtoMapper'][],
|
|
118
|
-
em?: EntityManager
|
|
119
|
-
): Promise<Dto['RoleDtoMapper'][]>;
|
|
120
|
-
deleteRole(idDto: IdDto, em?: EntityManager): Promise<void>;
|
|
121
|
-
deleteBatchRoles(idsDto: IdsDto, em?: EntityManager): Promise<void>;
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=role.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"role.service.d.ts","sourceRoot":"","sources":["../../services/role.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAEL,2BAA2B,EAC3B,4BAA4B,EAE7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,aAAa,EACb,OAAO,EACP,aAAa,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,eAAe,CAC1B,eAAe,SAAS,kBAAkB,EAC1C,OAAO,SAAS,iBAAiB,GAAG,iBAAiB,EACrD,GAAG,SAAS;IACV,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,aAAa,CAAC;IACnC,mBAAmB,EAAE,aAAa,CAAC;CACpC,GAAG;IACF,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,aAAa,CAAC;IACnC,mBAAmB,EAAE,aAAa,CAAC;CACpC,EACD,QAAQ,SAAS;IACf,aAAa,EAAE,+BAA+B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,mBAAmB,EAAE,+BAA+B,CAClD,OAAO,EACP,aAAa,CACd,CAAC;IACF,mBAAmB,EAAE,+BAA+B,CAClD,OAAO,EACP,aAAa,CACd,CAAC;CACH,GAAG;IACF,aAAa,EAAE,+BAA+B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,mBAAmB,EAAE,+BAA+B,CAClD,OAAO,EACP,aAAa,CACd,CAAC;IACF,mBAAmB,EAAE,+BAA+B,CAClD,OAAO,EACP,aAAa,CACd,CAAC;CACH,CACD,YAAW,WAAW;;IAcb,EAAE,EAAE,aAAa;IACxB,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,OAAO,CAAC;IACjE,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,OAAO,EAAE;QACjB,aAAa,EAAE,4BAA4B,CACzC,eAAe,EACf,GAAG,CAAC,eAAe,CAAC,EACpB,QAAQ,CAAC,eAAe,CAAC,CAC1B,CAAC;QACF,mBAAmB,EAAE,2BAA2B,CAC9C,eAAe,EACf,GAAG,CAAC,qBAAqB,CAAC,EAC1B,QAAQ,CAAC,qBAAqB,CAAC,CAChC,CAAC;QACF,mBAAmB,EAAE,2BAA2B,CAC9C,eAAe,EACf,GAAG,CAAC,qBAAqB,CAAC,EAC1B,QAAQ,CAAC,qBAAqB,CAAC,CAChC,CAAC;KACH;IA1BH,OAAO,CAAC,yBAAyB,CAI/B;gBAGO,EAAE,EAAE,aAAa,EACd,sBAAsB,EAAE,sBAAsB,CAAC,OAAO,CAAC,EACvD,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE;QACjB,aAAa,EAAE,4BAA4B,CACzC,eAAe,EACf,GAAG,CAAC,eAAe,CAAC,EACpB,QAAQ,CAAC,eAAe,CAAC,CAC1B,CAAC;QACF,mBAAmB,EAAE,2BAA2B,CAC9C,eAAe,EACf,GAAG,CAAC,qBAAqB,CAAC,EAC1B,QAAQ,CAAC,qBAAqB,CAAC,CAChC,CAAC;QACF,mBAAmB,EAAE,2BAA2B,CAC9C,eAAe,EACf,GAAG,CAAC,qBAAqB,CAAC,EAC1B,QAAQ,CAAC,qBAAqB,CAAC,CAChC,CAAC;KACH,EACD,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAC;KAC9B;IAYG,UAAU,CACd,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACnC,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAkB1B,gBAAgB,CACpB,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAAE,EACtC,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;IA2B5B,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5D,aAAa,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAwBtE,UAAU,CACd,OAAO,EAAE,GAAG,CAAC,qBAAqB,CAAC,EACnC,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAmB1B,gBAAgB,CACpB,QAAQ,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAAE,EACtC,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;IA4B5B,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAO1E"}
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { evaluateTelemetryOptions } from '@forklaunch/core/http';
|
|
2
|
-
import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
|
|
3
|
-
export class BaseRoleService {
|
|
4
|
-
em;
|
|
5
|
-
openTelemetryCollector;
|
|
6
|
-
schemaValidator;
|
|
7
|
-
mappers;
|
|
8
|
-
#mappers;
|
|
9
|
-
evaluatedTelemetryOptions;
|
|
10
|
-
constructor(em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
11
|
-
this.em = em;
|
|
12
|
-
this.openTelemetryCollector = openTelemetryCollector;
|
|
13
|
-
this.schemaValidator = schemaValidator;
|
|
14
|
-
this.mappers = mappers;
|
|
15
|
-
this.#mappers = transformIntoInternalDtoMapper(mappers, schemaValidator);
|
|
16
|
-
this.evaluatedTelemetryOptions = options?.telemetry
|
|
17
|
-
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
18
|
-
: {
|
|
19
|
-
logging: false,
|
|
20
|
-
metrics: false,
|
|
21
|
-
tracing: false
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
async createRole(roleDto, em) {
|
|
25
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
26
|
-
this.openTelemetryCollector.info('Creating role', roleDto);
|
|
27
|
-
}
|
|
28
|
-
const role = await this.#mappers.CreateRoleDtoMapper.deserializeDtoToEntity(
|
|
29
|
-
roleDto,
|
|
30
|
-
em ?? this.em
|
|
31
|
-
);
|
|
32
|
-
if (em) {
|
|
33
|
-
await em.persist(role);
|
|
34
|
-
} else {
|
|
35
|
-
await this.em.persistAndFlush(role);
|
|
36
|
-
}
|
|
37
|
-
return this.#mappers.RoleDtoMapper.serializeEntityToDto(role);
|
|
38
|
-
}
|
|
39
|
-
async createBatchRoles(roleDtos, em) {
|
|
40
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
41
|
-
this.openTelemetryCollector.info('Creating batch roles', roleDtos);
|
|
42
|
-
}
|
|
43
|
-
const roles = await Promise.all(
|
|
44
|
-
roleDtos.map(async (roleDto) =>
|
|
45
|
-
this.#mappers.CreateRoleDtoMapper.deserializeDtoToEntity(
|
|
46
|
-
roleDto,
|
|
47
|
-
em ?? this.em
|
|
48
|
-
)
|
|
49
|
-
)
|
|
50
|
-
);
|
|
51
|
-
if (em) {
|
|
52
|
-
await em.persist(roles);
|
|
53
|
-
} else {
|
|
54
|
-
await this.em.persistAndFlush(roles);
|
|
55
|
-
}
|
|
56
|
-
return Promise.all(
|
|
57
|
-
roles.map((role) =>
|
|
58
|
-
this.#mappers.RoleDtoMapper.serializeEntityToDto(role)
|
|
59
|
-
)
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
async getRole({ id }, em) {
|
|
63
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
64
|
-
this.openTelemetryCollector.info('Getting role', { id });
|
|
65
|
-
}
|
|
66
|
-
const role = await (em ?? this.em).findOneOrFail('Role', id, {
|
|
67
|
-
populate: ['id', '*']
|
|
68
|
-
});
|
|
69
|
-
return this.#mappers.RoleDtoMapper.serializeEntityToDto(role);
|
|
70
|
-
}
|
|
71
|
-
async getBatchRoles({ ids }, em) {
|
|
72
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
73
|
-
this.openTelemetryCollector.info('Getting batch roles', { ids });
|
|
74
|
-
}
|
|
75
|
-
return Promise.all(
|
|
76
|
-
(
|
|
77
|
-
await (em ?? this.em).find(
|
|
78
|
-
'Role',
|
|
79
|
-
{
|
|
80
|
-
id: { $in: ids }
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
populate: ['id', '*']
|
|
84
|
-
}
|
|
85
|
-
)
|
|
86
|
-
).map((role) => this.#mappers.RoleDtoMapper.serializeEntityToDto(role))
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
async updateRole(roleDto, em) {
|
|
90
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
91
|
-
this.openTelemetryCollector.info('Updating role', roleDto);
|
|
92
|
-
}
|
|
93
|
-
const role = await this.#mappers.UpdateRoleDtoMapper.deserializeDtoToEntity(
|
|
94
|
-
roleDto,
|
|
95
|
-
em ?? this.em
|
|
96
|
-
);
|
|
97
|
-
if (em) {
|
|
98
|
-
await em.persist(role);
|
|
99
|
-
} else {
|
|
100
|
-
await this.em.persistAndFlush(role);
|
|
101
|
-
}
|
|
102
|
-
return this.#mappers.RoleDtoMapper.serializeEntityToDto(role);
|
|
103
|
-
}
|
|
104
|
-
async updateBatchRoles(roleDtos, em) {
|
|
105
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
106
|
-
this.openTelemetryCollector.info('Updating batch roles', roleDtos);
|
|
107
|
-
}
|
|
108
|
-
const roles = await Promise.all(
|
|
109
|
-
roleDtos.map(async (roleDto) =>
|
|
110
|
-
this.#mappers.UpdateRoleDtoMapper.deserializeDtoToEntity(
|
|
111
|
-
roleDto,
|
|
112
|
-
em ?? this.em
|
|
113
|
-
)
|
|
114
|
-
)
|
|
115
|
-
);
|
|
116
|
-
if (em) {
|
|
117
|
-
await em.persist(roles);
|
|
118
|
-
} else {
|
|
119
|
-
await this.em.persistAndFlush(roles);
|
|
120
|
-
}
|
|
121
|
-
return Promise.all(
|
|
122
|
-
roles.map((role) =>
|
|
123
|
-
this.#mappers.RoleDtoMapper.serializeEntityToDto(role)
|
|
124
|
-
)
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
async deleteRole(idDto, em) {
|
|
128
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
129
|
-
this.openTelemetryCollector.info('Deleting role', idDto);
|
|
130
|
-
}
|
|
131
|
-
await (em ?? this.em).nativeDelete('Role', idDto);
|
|
132
|
-
}
|
|
133
|
-
async deleteBatchRoles(idsDto, em) {
|
|
134
|
-
if (this.evaluatedTelemetryOptions.logging) {
|
|
135
|
-
this.openTelemetryCollector.info('Deleting batch roles', idsDto);
|
|
136
|
-
}
|
|
137
|
-
await (em ?? this.em).nativeDelete('Role', { id: { $in: idsDto.ids } });
|
|
138
|
-
}
|
|
139
|
-
}
|