@forklaunch/implementation-iam-base 0.1.11 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/package.json +5 -5
  2. package/lib/__test__/schemaEquality.test.d.ts +0 -2
  3. package/lib/__test__/schemaEquality.test.d.ts.map +0 -1
  4. package/lib/__test__/schemaEquality.test.js +0 -283
  5. package/lib/eject/domain/schemas/index.ts +0 -4
  6. package/lib/eject/domain/schemas/organization.schema.ts +0 -53
  7. package/lib/eject/domain/schemas/permission.schema.ts +0 -36
  8. package/lib/eject/domain/schemas/role.schema.ts +0 -37
  9. package/lib/eject/domain/schemas/user.schema.ts +0 -53
  10. package/lib/eject/services/index.ts +0 -4
  11. package/lib/eject/services/organization.service.ts +0 -143
  12. package/lib/eject/services/permission.service.ts +0 -345
  13. package/lib/eject/services/role.service.ts +0 -179
  14. package/lib/eject/services/user.service.ts +0 -224
  15. package/lib/jest.config.d.ts +0 -4
  16. package/lib/jest.config.d.ts.map +0 -1
  17. package/lib/jest.config.js +0 -19
  18. package/lib/schemas/index.d.ts +0 -5
  19. package/lib/schemas/index.d.ts.map +0 -1
  20. package/lib/schemas/index.js +0 -4
  21. package/lib/schemas/organization.schema.d.ts +0 -411
  22. package/lib/schemas/organization.schema.d.ts.map +0 -1
  23. package/lib/schemas/organization.schema.js +0 -7
  24. package/lib/schemas/permission.schema.d.ts +0 -104
  25. package/lib/schemas/permission.schema.d.ts.map +0 -1
  26. package/lib/schemas/permission.schema.js +0 -7
  27. package/lib/schemas/role.schema.d.ts +0 -163
  28. package/lib/schemas/role.schema.d.ts.map +0 -1
  29. package/lib/schemas/role.schema.js +0 -7
  30. package/lib/schemas/typebox/organization.schema.d.ts +0 -414
  31. package/lib/schemas/typebox/organization.schema.d.ts.map +0 -1
  32. package/lib/schemas/typebox/organization.schema.js +0 -44
  33. package/lib/schemas/typebox/permission.schema.d.ts +0 -131
  34. package/lib/schemas/typebox/permission.schema.d.ts.map +0 -1
  35. package/lib/schemas/typebox/permission.schema.js +0 -32
  36. package/lib/schemas/typebox/role.schema.d.ts +0 -199
  37. package/lib/schemas/typebox/role.schema.d.ts.map +0 -1
  38. package/lib/schemas/typebox/role.schema.js +0 -33
  39. package/lib/schemas/typebox/user.schema.d.ts +0 -339
  40. package/lib/schemas/typebox/user.schema.d.ts.map +0 -1
  41. package/lib/schemas/typebox/user.schema.js +0 -49
  42. package/lib/schemas/user.schema.d.ts +0 -290
  43. package/lib/schemas/user.schema.d.ts.map +0 -1
  44. package/lib/schemas/user.schema.js +0 -7
  45. package/lib/schemas/zod/organization.schema.d.ts +0 -374
  46. package/lib/schemas/zod/organization.schema.d.ts.map +0 -1
  47. package/lib/schemas/zod/organization.schema.js +0 -44
  48. package/lib/schemas/zod/permission.schema.d.ts +0 -63
  49. package/lib/schemas/zod/permission.schema.d.ts.map +0 -1
  50. package/lib/schemas/zod/permission.schema.js +0 -32
  51. package/lib/schemas/zod/role.schema.d.ts +0 -113
  52. package/lib/schemas/zod/role.schema.d.ts.map +0 -1
  53. package/lib/schemas/zod/role.schema.js +0 -33
  54. package/lib/schemas/zod/user.schema.d.ts +0 -225
  55. package/lib/schemas/zod/user.schema.d.ts.map +0 -1
  56. package/lib/schemas/zod/user.schema.js +0 -49
  57. package/lib/services/index.d.ts +0 -5
  58. package/lib/services/index.d.ts.map +0 -1
  59. package/lib/services/index.js +0 -4
  60. package/lib/services/organization.service.d.ts +0 -118
  61. package/lib/services/organization.service.d.ts.map +0 -1
  62. package/lib/services/organization.service.js +0 -50
  63. package/lib/services/permission.service.d.ts +0 -138
  64. package/lib/services/permission.service.d.ts.map +0 -1
  65. package/lib/services/permission.service.js +0 -203
  66. package/lib/services/role.service.d.ts +0 -118
  67. package/lib/services/role.service.d.ts.map +0 -1
  68. package/lib/services/role.service.js +0 -73
  69. package/lib/services/user.service.d.ts +0 -138
  70. package/lib/services/user.service.d.ts.map +0 -1
  71. package/lib/services/user.service.js +0 -126
  72. package/lib/tsconfig.tsbuildinfo +0 -1
  73. package/lib/vitest.config.d.ts +0 -3
  74. package/lib/vitest.config.d.ts.map +0 -1
  75. package/lib/vitest.config.js +0 -7
@@ -1,118 +0,0 @@
1
- import { IdDto } from '@forklaunch/common';
2
- import {
3
- RequestDtoMapperConstructor,
4
- ResponseDtoMapperConstructor
5
- } from '@forklaunch/core/mappers';
6
- import {
7
- MetricsDefinition,
8
- OpenTelemetryCollector
9
- } from '@forklaunch/core/http';
10
- import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
11
- import { OrganizationService } from '@forklaunch/interfaces-iam/interfaces';
12
- import {
13
- CreateOrganizationDto,
14
- OrganizationDto,
15
- UpdateOrganizationDto
16
- } from '@forklaunch/interfaces-iam/types';
17
- import { AnySchemaValidator } from '@forklaunch/validator';
18
- import { EntityManager } from '@mikro-orm/core';
19
- export declare class BaseOrganizationService<
20
- SchemaValidator extends AnySchemaValidator,
21
- OrganizationStatus,
22
- Metrics extends MetricsDefinition = MetricsDefinition,
23
- Dto extends {
24
- OrganizationDtoMapper: OrganizationDto<OrganizationStatus>;
25
- CreateOrganizationDtoMapper: CreateOrganizationDto;
26
- UpdateOrganizationDtoMapper: UpdateOrganizationDto;
27
- } = {
28
- OrganizationDtoMapper: OrganizationDto<OrganizationStatus>;
29
- CreateOrganizationDtoMapper: CreateOrganizationDto;
30
- UpdateOrganizationDtoMapper: UpdateOrganizationDto;
31
- },
32
- Entities extends {
33
- OrganizationDtoMapper: MapNestedDtoArraysToCollections<
34
- OrganizationDto<OrganizationStatus>,
35
- 'users'
36
- >;
37
- CreateOrganizationDtoMapper: MapNestedDtoArraysToCollections<
38
- OrganizationDto<OrganizationStatus>,
39
- 'users'
40
- >;
41
- UpdateOrganizationDtoMapper: MapNestedDtoArraysToCollections<
42
- OrganizationDto<OrganizationStatus>,
43
- 'users'
44
- >;
45
- } = {
46
- OrganizationDtoMapper: MapNestedDtoArraysToCollections<
47
- OrganizationDto<OrganizationStatus>,
48
- 'users'
49
- >;
50
- CreateOrganizationDtoMapper: MapNestedDtoArraysToCollections<
51
- OrganizationDto<OrganizationStatus>,
52
- 'users'
53
- >;
54
- UpdateOrganizationDtoMapper: MapNestedDtoArraysToCollections<
55
- OrganizationDto<OrganizationStatus>,
56
- 'users'
57
- >;
58
- }
59
- > implements OrganizationService<OrganizationStatus>
60
- {
61
- #private;
62
- em: EntityManager;
63
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
64
- protected schemaValidator: SchemaValidator;
65
- protected mapperss: {
66
- OrganizationDtoMapper: ResponseDtoMapperConstructor<
67
- SchemaValidator,
68
- Dto['OrganizationDtoMapper'],
69
- Entities['OrganizationDtoMapper']
70
- >;
71
- CreateOrganizationDtoMapper: RequestDtoMapperConstructor<
72
- SchemaValidator,
73
- Dto['CreateOrganizationDtoMapper'],
74
- Entities['CreateOrganizationDtoMapper']
75
- >;
76
- UpdateOrganizationDtoMapper: RequestDtoMapperConstructor<
77
- SchemaValidator,
78
- Dto['UpdateOrganizationDtoMapper'],
79
- Entities['UpdateOrganizationDtoMapper']
80
- >;
81
- };
82
- constructor(
83
- em: EntityManager,
84
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
85
- schemaValidator: SchemaValidator,
86
- mapperss: {
87
- OrganizationDtoMapper: ResponseDtoMapperConstructor<
88
- SchemaValidator,
89
- Dto['OrganizationDtoMapper'],
90
- Entities['OrganizationDtoMapper']
91
- >;
92
- CreateOrganizationDtoMapper: RequestDtoMapperConstructor<
93
- SchemaValidator,
94
- Dto['CreateOrganizationDtoMapper'],
95
- Entities['CreateOrganizationDtoMapper']
96
- >;
97
- UpdateOrganizationDtoMapper: RequestDtoMapperConstructor<
98
- SchemaValidator,
99
- Dto['UpdateOrganizationDtoMapper'],
100
- Entities['UpdateOrganizationDtoMapper']
101
- >;
102
- }
103
- );
104
- createOrganization(
105
- organizationDto: Dto['CreateOrganizationDtoMapper'],
106
- em?: EntityManager
107
- ): Promise<Dto['OrganizationDtoMapper']>;
108
- getOrganization(
109
- idDto: IdDto,
110
- em?: EntityManager
111
- ): Promise<Dto['OrganizationDtoMapper']>;
112
- updateOrganization(
113
- organizationDto: Dto['UpdateOrganizationDtoMapper'],
114
- em?: EntityManager
115
- ): Promise<Dto['OrganizationDtoMapper']>;
116
- deleteOrganization(idDto: IdDto, em?: EntityManager): Promise<void>;
117
- }
118
- //# sourceMappingURL=organization.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"organization.service.d.ts","sourceRoot":"","sources":["../../services/organization.service.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
2
- export class BaseOrganizationService {
3
- em;
4
- openTelemetryCollector;
5
- schemaValidator;
6
- mapperss;
7
- #mapperss;
8
- constructor(em, openTelemetryCollector, schemaValidator, mapperss) {
9
- this.em = em;
10
- this.openTelemetryCollector = openTelemetryCollector;
11
- this.schemaValidator = schemaValidator;
12
- this.mapperss = mapperss;
13
- this.#mapperss = transformIntoInternalDtoMapper(mapperss, schemaValidator);
14
- }
15
- async createOrganization(organizationDto, em) {
16
- this.openTelemetryCollector.log('info', 'Creating organization');
17
- const organization =
18
- this.#mapperss.CreateOrganizationDtoMapper.deserializeDtoToEntity(
19
- organizationDto
20
- );
21
- await (em ?? this.em).transactional(async (innerEm) => {
22
- await innerEm.persist(organization);
23
- });
24
- return this.#mapperss.OrganizationDtoMapper.serializeEntityToDto(
25
- organization
26
- );
27
- }
28
- async getOrganization(idDto, em) {
29
- const organization = await (em ?? this.em).findOneOrFail(
30
- 'Organization',
31
- idDto
32
- );
33
- return this.#mapperss.OrganizationDtoMapper.serializeEntityToDto(
34
- organization
35
- );
36
- }
37
- async updateOrganization(organizationDto, em) {
38
- const updatedOrganization =
39
- this.#mapperss.UpdateOrganizationDtoMapper.deserializeDtoToEntity(
40
- organizationDto
41
- );
42
- await (em ?? this.em).upsert(updatedOrganization);
43
- return this.#mapperss.OrganizationDtoMapper.serializeEntityToDto(
44
- updatedOrganization
45
- );
46
- }
47
- async deleteOrganization(idDto, em) {
48
- await (em ?? this.em).nativeDelete('Organization', idDto);
49
- }
50
- }
@@ -1,138 +0,0 @@
1
- import {
2
- PermissionService,
3
- RoleService
4
- } from '@forklaunch/interfaces-iam/interfaces';
5
- import { IdDto, IdsDto } from '@forklaunch/common';
6
- import {
7
- RequestDtoMapperConstructor,
8
- ResponseDtoMapperConstructor
9
- } from '@forklaunch/core/mappers';
10
- import {
11
- MetricsDefinition,
12
- OpenTelemetryCollector
13
- } from '@forklaunch/core/http';
14
- import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
15
- import {
16
- CreatePermissionDto,
17
- PermissionDto,
18
- RoleDto,
19
- UpdatePermissionDto
20
- } from '@forklaunch/interfaces-iam/types';
21
- import { AnySchemaValidator } from '@forklaunch/validator';
22
- import { EntityManager } from '@mikro-orm/core';
23
- export declare class BasePermissionService<
24
- SchemaValidator extends AnySchemaValidator,
25
- Metrics extends MetricsDefinition = MetricsDefinition,
26
- Dto extends {
27
- PermissionDtoMapper: PermissionDto;
28
- CreatePermissionDtoMapper: CreatePermissionDto;
29
- UpdatePermissionDtoMapper: UpdatePermissionDto;
30
- RoleDtoMapper: RoleDto;
31
- } = {
32
- PermissionDtoMapper: PermissionDto;
33
- CreatePermissionDtoMapper: CreatePermissionDto;
34
- UpdatePermissionDtoMapper: UpdatePermissionDto;
35
- RoleDtoMapper: RoleDto;
36
- },
37
- Entities extends {
38
- PermissionDtoMapper: PermissionDto;
39
- CreatePermissionDtoMapper: PermissionDto;
40
- UpdatePermissionDtoMapper: PermissionDto;
41
- RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
42
- } = {
43
- PermissionDtoMapper: PermissionDto;
44
- CreatePermissionDtoMapper: PermissionDto;
45
- UpdatePermissionDtoMapper: PermissionDto;
46
- RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
47
- }
48
- > implements PermissionService
49
- {
50
- #private;
51
- em: EntityManager;
52
- protected roleServiceFactory: () => RoleService;
53
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
54
- protected schemaValidator: SchemaValidator;
55
- protected mapperss: {
56
- PermissionDtoMapper: ResponseDtoMapperConstructor<
57
- SchemaValidator,
58
- Dto['PermissionDtoMapper'],
59
- Entities['PermissionDtoMapper']
60
- >;
61
- CreatePermissionDtoMapper: RequestDtoMapperConstructor<
62
- SchemaValidator,
63
- Dto['CreatePermissionDtoMapper'],
64
- Entities['CreatePermissionDtoMapper']
65
- >;
66
- UpdatePermissionDtoMapper: RequestDtoMapperConstructor<
67
- SchemaValidator,
68
- Dto['UpdatePermissionDtoMapper'],
69
- Entities['UpdatePermissionDtoMapper']
70
- >;
71
- RoleDtoMapper: RequestDtoMapperConstructor<
72
- SchemaValidator,
73
- Dto['RoleDtoMapper'],
74
- Entities['RoleDtoMapper']
75
- >;
76
- };
77
- constructor(
78
- em: EntityManager,
79
- roleServiceFactory: () => RoleService,
80
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
81
- schemaValidator: SchemaValidator,
82
- mapperss: {
83
- PermissionDtoMapper: ResponseDtoMapperConstructor<
84
- SchemaValidator,
85
- Dto['PermissionDtoMapper'],
86
- Entities['PermissionDtoMapper']
87
- >;
88
- CreatePermissionDtoMapper: RequestDtoMapperConstructor<
89
- SchemaValidator,
90
- Dto['CreatePermissionDtoMapper'],
91
- Entities['CreatePermissionDtoMapper']
92
- >;
93
- UpdatePermissionDtoMapper: RequestDtoMapperConstructor<
94
- SchemaValidator,
95
- Dto['UpdatePermissionDtoMapper'],
96
- Entities['UpdatePermissionDtoMapper']
97
- >;
98
- RoleDtoMapper: RequestDtoMapperConstructor<
99
- SchemaValidator,
100
- Dto['RoleDtoMapper'],
101
- Entities['RoleDtoMapper']
102
- >;
103
- }
104
- );
105
- private updateRolesWithPermissions;
106
- private removePermissionsFromRoles;
107
- private getBatchRoles;
108
- private createPermissionDto;
109
- private extractCreatePermissionDtoToEntityData;
110
- createPermission(
111
- createPermissionDto: Dto['CreatePermissionDtoMapper'],
112
- em?: EntityManager
113
- ): Promise<Dto['PermissionDtoMapper']>;
114
- createBatchPermissions(
115
- permissionDtos: Dto['CreatePermissionDtoMapper'][],
116
- em?: EntityManager
117
- ): Promise<Dto['PermissionDtoMapper'][]>;
118
- getPermission(
119
- idDto: IdDto,
120
- em?: EntityManager
121
- ): Promise<Dto['PermissionDtoMapper']>;
122
- getBatchPermissions(
123
- idsDto: IdsDto,
124
- em?: EntityManager
125
- ): Promise<Dto['PermissionDtoMapper'][]>;
126
- private updatePermissionDto;
127
- updatePermission(
128
- permissionDto: Dto['UpdatePermissionDtoMapper'],
129
- em?: EntityManager
130
- ): Promise<Dto['PermissionDtoMapper']>;
131
- updateBatchPermissions(
132
- permissionDtos: Dto['UpdatePermissionDtoMapper'][],
133
- em?: EntityManager
134
- ): Promise<Dto['PermissionDtoMapper'][]>;
135
- deletePermission(idDto: IdDto, em?: EntityManager): Promise<void>;
136
- deleteBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<void>;
137
- }
138
- //# 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,203 +0,0 @@
1
- import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
2
- export class BasePermissionService {
3
- em;
4
- roleServiceFactory;
5
- openTelemetryCollector;
6
- schemaValidator;
7
- mapperss;
8
- #mapperss;
9
- constructor(
10
- em,
11
- roleServiceFactory,
12
- openTelemetryCollector,
13
- schemaValidator,
14
- mapperss
15
- ) {
16
- this.em = em;
17
- this.roleServiceFactory = roleServiceFactory;
18
- this.openTelemetryCollector = openTelemetryCollector;
19
- this.schemaValidator = schemaValidator;
20
- this.mapperss = mapperss;
21
- this.#mapperss = transformIntoInternalDtoMapper(mapperss, schemaValidator);
22
- }
23
- // start: global helper functions
24
- async updateRolesWithPermissions(roles, permissions) {
25
- return await Promise.all(
26
- roles.map(async (role) => {
27
- permissions.forEach((permission) => role.permissions.add(permission));
28
- return role;
29
- })
30
- );
31
- }
32
- async removePermissionsFromRoles(roles, permissions) {
33
- return await Promise.all(
34
- roles.map(async (role) => {
35
- permissions.forEach((permission) =>
36
- role.permissions.remove(permission)
37
- );
38
- return role;
39
- })
40
- );
41
- }
42
- async getBatchRoles(roleIds, em) {
43
- return roleIds
44
- ? (await this.roleServiceFactory().getBatchRoles(roleIds, em)).map(
45
- (role) => {
46
- return (em ?? this.em).merge(
47
- this.#mapperss.RoleDtoMapper.deserializeDtoToEntity(role)
48
- );
49
- }
50
- )
51
- : [];
52
- }
53
- // end: global helper functions
54
- // start: createPermission helper functions
55
- async createPermissionDto({ permission, addToRoles }) {
56
- let roles = [];
57
- if (addToRoles) {
58
- roles = await this.updateRolesWithPermissions(addToRoles, [permission]);
59
- }
60
- return { permission, roles };
61
- }
62
- async extractCreatePermissionDtoToEntityData(permissionDto, em) {
63
- return {
64
- permission: (em ?? this.em).merge(
65
- this.#mapperss.CreatePermissionDtoMapper.deserializeDtoToEntity(
66
- permissionDto
67
- )
68
- ),
69
- addToRoles: permissionDto.addToRolesIds
70
- ? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
71
- : []
72
- };
73
- }
74
- // end: createPermission helper functions
75
- async createPermission(createPermissionDto, em) {
76
- const { permission, roles } = await this.createPermissionDto(
77
- await this.extractCreatePermissionDtoToEntityData(createPermissionDto, em)
78
- );
79
- await (em ?? this.em).transactional(async (innerEm) => {
80
- await innerEm.persist([permission, ...roles]);
81
- });
82
- return this.#mapperss.PermissionDtoMapper.serializeEntityToDto(permission);
83
- }
84
- async createBatchPermissions(permissionDtos, em) {
85
- const rolesCache = {};
86
- const permissions = [];
87
- await (em ?? this.em).transactional(async (em) => {
88
- permissionDtos.map(async (createPermissionDto) => {
89
- const { permission, roles } = await this.createPermissionDto(
90
- await this.extractCreatePermissionDtoToEntityData(
91
- createPermissionDto,
92
- em
93
- )
94
- );
95
- roles.forEach((role) => {
96
- if (
97
- rolesCache[role.id] &&
98
- role.permissions !== rolesCache[role.id].permissions
99
- ) {
100
- role.permissions.getItems().forEach((permission) => {
101
- if (!rolesCache[role.id].permissions.contains(permission)) {
102
- rolesCache[role.id].permissions.add(permission);
103
- }
104
- });
105
- } else {
106
- rolesCache[role.id] = role;
107
- }
108
- });
109
- permissions.push(permission);
110
- });
111
- await (em ?? this.em).persist([
112
- ...permissions,
113
- ...Object.values(rolesCache)
114
- ]);
115
- });
116
- return permissions.map((permission) =>
117
- this.#mapperss.PermissionDtoMapper.serializeEntityToDto(permission)
118
- );
119
- }
120
- async getPermission(idDto, em) {
121
- const permission = await (em ?? this.em).findOneOrFail('Permission', idDto);
122
- return this.#mapperss.PermissionDtoMapper.serializeEntityToDto(permission);
123
- }
124
- async getBatchPermissions(idsDto, em) {
125
- return (await (em ?? this.em).find('Permission', idsDto)).map(
126
- (permission) =>
127
- this.#mapperss.PermissionDtoMapper.serializeEntityToDto(permission)
128
- );
129
- }
130
- // start: updatePermission helper functions
131
- updatePermissionDto = async (permissionDto, em) => {
132
- const permission =
133
- this.#mapperss.UpdatePermissionDtoMapper.deserializeDtoToEntity(
134
- permissionDto
135
- );
136
- const addToRoles = permissionDto.addToRolesIds
137
- ? await this.getBatchRoles({ ids: permissionDto.addToRolesIds }, em)
138
- : [];
139
- const removeFromRoles = permissionDto.removeFromRolesIds
140
- ? await this.getBatchRoles({ ids: permissionDto.removeFromRolesIds }, em)
141
- : [];
142
- let roles = [];
143
- roles = roles.concat(
144
- await this.updateRolesWithPermissions(addToRoles, [permission])
145
- );
146
- roles = roles.concat(
147
- await this.removePermissionsFromRoles(removeFromRoles, [permission])
148
- );
149
- return {
150
- permission,
151
- roles
152
- };
153
- };
154
- // end: updatePermission helper functions
155
- async updatePermission(permissionDto, em) {
156
- const { permission, roles } = await this.updatePermissionDto(permissionDto);
157
- await (em ?? this.em).upsertMany([permission, ...roles]);
158
- if (!em) {
159
- this.em.flush();
160
- }
161
- return this.#mapperss.PermissionDtoMapper.serializeEntityToDto(permission);
162
- }
163
- async updateBatchPermissions(permissionDtos, em) {
164
- const rolesCache = {};
165
- const permissions = [];
166
- await (em ?? this.em).transactional(async (em) => {
167
- permissionDtos.map(async (updatePermissionDto) => {
168
- const { permission, roles } =
169
- await this.updatePermissionDto(updatePermissionDto);
170
- roles.forEach((role) => {
171
- if (
172
- rolesCache[role.id] &&
173
- role.permissions !== rolesCache[role.id].permissions
174
- ) {
175
- role.permissions.getItems().forEach((permission) => {
176
- if (!rolesCache[role.id].permissions.contains(permission)) {
177
- rolesCache[role.id].permissions.add(permission);
178
- }
179
- });
180
- } else {
181
- rolesCache[role.id] = role;
182
- }
183
- });
184
- permissions.push(permission);
185
- });
186
- await (em ?? this.em).persist([
187
- ...permissions,
188
- ...Object.values(rolesCache)
189
- ]);
190
- });
191
- return permissions.map((permission) =>
192
- this.#mapperss.PermissionDtoMapper.serializeEntityToDto(permission)
193
- );
194
- }
195
- async deletePermission(idDto, em) {
196
- await (em ?? this.em).nativeDelete('Permission', idDto);
197
- }
198
- async deleteBatchPermissions(idsDto, em) {
199
- await (em ?? this.em).nativeDelete('Permission', {
200
- id: { $in: idsDto.ids }
201
- });
202
- }
203
- }
@@ -1,118 +0,0 @@
1
- import {
2
- MetricsDefinition,
3
- OpenTelemetryCollector
4
- } from '@forklaunch/core/http';
5
- import { RoleService } from '@forklaunch/interfaces-iam/interfaces';
6
- import { EntityManager } from '@mikro-orm/core';
7
- import { IdDto, IdsDto } from '@forklaunch/common';
8
- import {
9
- RequestDtoMapperConstructor,
10
- ResponseDtoMapperConstructor
11
- } from '@forklaunch/core/mappers';
12
- import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
13
- import {
14
- CreateRoleDto,
15
- RoleDto,
16
- UpdateRoleDto
17
- } from '@forklaunch/interfaces-iam/types';
18
- import { AnySchemaValidator } from '@forklaunch/validator';
19
- export declare class BaseRoleService<
20
- SchemaValidator extends AnySchemaValidator,
21
- Metrics extends MetricsDefinition = MetricsDefinition,
22
- Dto extends {
23
- RoleDtoMapper: RoleDto;
24
- CreateRoleDtoMapper: CreateRoleDto;
25
- UpdateRoleDtoMapper: UpdateRoleDto;
26
- } = {
27
- RoleDtoMapper: RoleDto;
28
- CreateRoleDtoMapper: CreateRoleDto;
29
- UpdateRoleDtoMapper: UpdateRoleDto;
30
- },
31
- Entities extends {
32
- RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
33
- CreateRoleDtoMapper: MapNestedDtoArraysToCollections<
34
- RoleDto,
35
- 'permissions'
36
- >;
37
- UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<
38
- RoleDto,
39
- 'permissions'
40
- >;
41
- } = {
42
- RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
43
- CreateRoleDtoMapper: MapNestedDtoArraysToCollections<
44
- RoleDto,
45
- 'permissions'
46
- >;
47
- UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<
48
- RoleDto,
49
- 'permissions'
50
- >;
51
- }
52
- > implements RoleService
53
- {
54
- #private;
55
- em: EntityManager;
56
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
57
- protected schemaValidator: SchemaValidator;
58
- protected mapperss: {
59
- RoleDtoMapper: ResponseDtoMapperConstructor<
60
- SchemaValidator,
61
- Dto['RoleDtoMapper'],
62
- Entities['RoleDtoMapper']
63
- >;
64
- CreateRoleDtoMapper: RequestDtoMapperConstructor<
65
- SchemaValidator,
66
- Dto['CreateRoleDtoMapper'],
67
- Entities['CreateRoleDtoMapper']
68
- >;
69
- UpdateRoleDtoMapper: RequestDtoMapperConstructor<
70
- SchemaValidator,
71
- Dto['UpdateRoleDtoMapper'],
72
- Entities['UpdateRoleDtoMapper']
73
- >;
74
- };
75
- constructor(
76
- em: EntityManager,
77
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
78
- schemaValidator: SchemaValidator,
79
- mapperss: {
80
- RoleDtoMapper: ResponseDtoMapperConstructor<
81
- SchemaValidator,
82
- Dto['RoleDtoMapper'],
83
- Entities['RoleDtoMapper']
84
- >;
85
- CreateRoleDtoMapper: RequestDtoMapperConstructor<
86
- SchemaValidator,
87
- Dto['CreateRoleDtoMapper'],
88
- Entities['CreateRoleDtoMapper']
89
- >;
90
- UpdateRoleDtoMapper: RequestDtoMapperConstructor<
91
- SchemaValidator,
92
- Dto['UpdateRoleDtoMapper'],
93
- Entities['UpdateRoleDtoMapper']
94
- >;
95
- }
96
- );
97
- createRole(
98
- roleDto: Dto['CreateRoleDtoMapper'],
99
- em?: EntityManager
100
- ): Promise<Dto['RoleDtoMapper']>;
101
- createBatchRoles(
102
- roleDtos: Dto['CreateRoleDtoMapper'][],
103
- em?: EntityManager
104
- ): Promise<Dto['RoleDtoMapper'][]>;
105
- getRole(idDto: IdDto, em?: EntityManager): Promise<RoleDto>;
106
- getBatchRoles(idsDto: IdsDto, em?: EntityManager): Promise<RoleDto[]>;
107
- updateRole(
108
- roleDto: Dto['UpdateRoleDtoMapper'],
109
- em?: EntityManager
110
- ): Promise<Dto['RoleDtoMapper']>;
111
- updateBatchRoles(
112
- roleDtos: Dto['UpdateRoleDtoMapper'][],
113
- em?: EntityManager
114
- ): Promise<Dto['RoleDtoMapper'][]>;
115
- deleteRole(idDto: IdDto, em?: EntityManager): Promise<void>;
116
- deleteBatchRoles(idsDto: IdsDto, em?: EntityManager): Promise<void>;
117
- }
118
- //# 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":"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"}