@flusys/nestjs-iam 7.1.0 → 8.0.0-beta.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.
Files changed (173) hide show
  1. package/config/index.d.ts +3 -3
  2. package/controllers/action.controller.d.ts +4 -4
  3. package/controllers/company-action-permission.controller.d.ts +2 -2
  4. package/controllers/index.d.ts +6 -6
  5. package/controllers/my-permission.controller.d.ts +3 -3
  6. package/controllers/role-permission.controller.d.ts +4 -4
  7. package/controllers/role.controller.d.ts +2 -2
  8. package/controllers/user-action-permission.controller.d.ts +4 -4
  9. package/docs/iam-swagger.config.d.ts +2 -2
  10. package/docs/index.d.ts +1 -1
  11. package/dtos/action.dto.d.ts +2 -2
  12. package/dtos/index.d.ts +3 -3
  13. package/entities/action.entity.d.ts +2 -2
  14. package/entities/index.d.ts +11 -11
  15. package/entities/permission-with-company.entity.d.ts +1 -1
  16. package/entities/role-with-company.entity.d.ts +1 -1
  17. package/entities/role.entity.d.ts +1 -1
  18. package/entities/user-iam-permission.entity.d.ts +1 -1
  19. package/enums/index.d.ts +4 -4
  20. package/fesm/284.js +1262 -0
  21. package/fesm/867.js +3699 -0
  22. package/fesm/chunks/364.js +86 -0
  23. package/fesm/config/index.js +133 -3
  24. package/fesm/controllers/index.js +18 -7
  25. package/fesm/docs/index.js +240 -1
  26. package/fesm/dtos/index.js +1090 -3
  27. package/fesm/entities/index.js +670 -31
  28. package/fesm/enums/index.js +97 -4
  29. package/fesm/helpers/index.js +125 -2
  30. package/fesm/index.js +806 -11
  31. package/fesm/interfaces/index.js +17 -3
  32. package/fesm/modules/index.js +259 -1
  33. package/fesm/runtime.js +134 -0
  34. package/fesm/services/index.js +43 -6
  35. package/fesm/types/index.js +15 -1
  36. package/helpers/company-access.helper.d.ts +2 -2
  37. package/helpers/index.d.ts +2 -2
  38. package/helpers/permission-mode.helper.d.ts +1 -1
  39. package/index.d.ts +11 -11
  40. package/interfaces/action.interface.d.ts +2 -2
  41. package/interfaces/iam-module-options.interface.d.ts +3 -3
  42. package/interfaces/index.d.ts +3 -3
  43. package/modules/iam.module.d.ts +2 -2
  44. package/modules/index.d.ts +1 -1
  45. package/package.json +30 -37
  46. package/services/action.service.d.ts +9 -9
  47. package/services/iam-config.service.d.ts +4 -4
  48. package/services/iam-datasource.service.d.ts +3 -3
  49. package/services/index.d.ts +6 -6
  50. package/services/permission-cache.service.d.ts +5 -5
  51. package/services/permission.service.d.ts +4 -4
  52. package/services/role.service.d.ts +8 -8
  53. package/types/index.d.ts +1 -1
  54. package/cjs/config/event-actions.js +0 -36
  55. package/cjs/config/iam.constants.js +0 -11
  56. package/cjs/config/index.js +0 -20
  57. package/cjs/config/message-keys.js +0 -71
  58. package/cjs/controllers/action.controller.js +0 -174
  59. package/cjs/controllers/action.controller.spec.js +0 -79
  60. package/cjs/controllers/company-action-permission.controller.js +0 -119
  61. package/cjs/controllers/company-action-permission.controller.spec.js +0 -65
  62. package/cjs/controllers/index.js +0 -23
  63. package/cjs/controllers/my-permission.controller.js +0 -147
  64. package/cjs/controllers/my-permission.controller.spec.js +0 -128
  65. package/cjs/controllers/role-permission.controller.js +0 -191
  66. package/cjs/controllers/role-permission.controller.spec.js +0 -140
  67. package/cjs/controllers/role.controller.js +0 -102
  68. package/cjs/controllers/role.controller.spec.js +0 -86
  69. package/cjs/controllers/user-action-permission.controller.js +0 -129
  70. package/cjs/controllers/user-action-permission.controller.spec.js +0 -68
  71. package/cjs/docs/iam-swagger.config.js +0 -209
  72. package/cjs/docs/iam-swagger.config.spec.js +0 -99
  73. package/cjs/docs/index.js +0 -18
  74. package/cjs/dtos/action.dto.js +0 -282
  75. package/cjs/dtos/index.js +0 -21
  76. package/cjs/dtos/permission.dto.js +0 -637
  77. package/cjs/dtos/role.dto.js +0 -155
  78. package/cjs/entities/action.entity.js +0 -138
  79. package/cjs/entities/index.js +0 -80
  80. package/cjs/entities/index.spec.js +0 -56
  81. package/cjs/entities/permission-base.entity.js +0 -107
  82. package/cjs/entities/permission-with-company.entity.js +0 -100
  83. package/cjs/entities/role-base.entity.js +0 -80
  84. package/cjs/entities/role-with-company.entity.js +0 -55
  85. package/cjs/entities/role.entity.js +0 -25
  86. package/cjs/entities/user-iam-permission.entity.js +0 -43
  87. package/cjs/enums/action-type.enum.js +0 -22
  88. package/cjs/enums/iam-entity-type.enum.js +0 -17
  89. package/cjs/enums/iam-permission-type.enum.js +0 -17
  90. package/cjs/enums/index.js +0 -21
  91. package/cjs/enums/permission-type.enum.js +0 -16
  92. package/cjs/helpers/company-access.helper.js +0 -23
  93. package/cjs/helpers/company-access.helper.spec.js +0 -68
  94. package/cjs/helpers/index.js +0 -19
  95. package/cjs/helpers/permission-mode.helper.js +0 -49
  96. package/cjs/helpers/permission-mode.helper.spec.js +0 -54
  97. package/cjs/index.js +0 -28
  98. package/cjs/interfaces/action.interface.js +0 -4
  99. package/cjs/interfaces/iam-module-options.interface.js +0 -4
  100. package/cjs/interfaces/index.js +0 -20
  101. package/cjs/interfaces/role.interface.js +0 -7
  102. package/cjs/modules/iam.module.js +0 -186
  103. package/cjs/modules/iam.module.spec.js +0 -282
  104. package/cjs/modules/index.js +0 -18
  105. package/cjs/services/action.service.js +0 -337
  106. package/cjs/services/action.service.spec.js +0 -351
  107. package/cjs/services/iam-config.service.js +0 -87
  108. package/cjs/services/iam-config.service.spec.js +0 -110
  109. package/cjs/services/iam-datasource.service.js +0 -129
  110. package/cjs/services/iam-datasource.service.spec.js +0 -110
  111. package/cjs/services/index.js +0 -23
  112. package/cjs/services/permission-cache.service.js +0 -544
  113. package/cjs/services/permission-cache.service.spec.js +0 -718
  114. package/cjs/services/permission.service.js +0 -914
  115. package/cjs/services/permission.service.spec.js +0 -918
  116. package/cjs/services/role.service.js +0 -224
  117. package/cjs/services/role.service.spec.js +0 -347
  118. package/cjs/types/index.js +0 -18
  119. package/cjs/types/logic-node.type.js +0 -30
  120. package/fesm/config/event-actions.js +0 -15
  121. package/fesm/config/iam.constants.js +0 -1
  122. package/fesm/config/message-keys.js +0 -35
  123. package/fesm/controllers/action.controller.js +0 -164
  124. package/fesm/controllers/action.controller.spec.js +0 -75
  125. package/fesm/controllers/company-action-permission.controller.js +0 -109
  126. package/fesm/controllers/company-action-permission.controller.spec.js +0 -61
  127. package/fesm/controllers/my-permission.controller.js +0 -137
  128. package/fesm/controllers/my-permission.controller.spec.js +0 -124
  129. package/fesm/controllers/role-permission.controller.js +0 -181
  130. package/fesm/controllers/role-permission.controller.spec.js +0 -136
  131. package/fesm/controllers/role.controller.js +0 -92
  132. package/fesm/controllers/role.controller.spec.js +0 -82
  133. package/fesm/controllers/user-action-permission.controller.js +0 -119
  134. package/fesm/controllers/user-action-permission.controller.spec.js +0 -64
  135. package/fesm/docs/iam-swagger.config.js +0 -199
  136. package/fesm/docs/iam-swagger.config.spec.js +0 -95
  137. package/fesm/dtos/action.dto.js +0 -252
  138. package/fesm/dtos/permission.dto.js +0 -571
  139. package/fesm/dtos/role.dto.js +0 -134
  140. package/fesm/entities/action.entity.js +0 -128
  141. package/fesm/entities/index.spec.js +0 -52
  142. package/fesm/entities/permission-base.entity.js +0 -100
  143. package/fesm/entities/permission-with-company.entity.js +0 -90
  144. package/fesm/entities/role-base.entity.js +0 -70
  145. package/fesm/entities/role-with-company.entity.js +0 -45
  146. package/fesm/entities/role.entity.js +0 -15
  147. package/fesm/entities/user-iam-permission.entity.js +0 -33
  148. package/fesm/enums/action-type.enum.js +0 -12
  149. package/fesm/enums/iam-entity-type.enum.js +0 -7
  150. package/fesm/enums/iam-permission-type.enum.js +0 -7
  151. package/fesm/enums/permission-type.enum.js +0 -6
  152. package/fesm/helpers/company-access.helper.js +0 -18
  153. package/fesm/helpers/company-access.helper.spec.js +0 -64
  154. package/fesm/helpers/permission-mode.helper.js +0 -49
  155. package/fesm/helpers/permission-mode.helper.spec.js +0 -50
  156. package/fesm/interfaces/action.interface.js +0 -3
  157. package/fesm/interfaces/iam-module-options.interface.js +0 -3
  158. package/fesm/interfaces/role.interface.js +0 -4
  159. package/fesm/modules/iam.module.js +0 -176
  160. package/fesm/modules/iam.module.spec.js +0 -278
  161. package/fesm/services/action.service.js +0 -327
  162. package/fesm/services/action.service.spec.js +0 -347
  163. package/fesm/services/iam-config.service.js +0 -77
  164. package/fesm/services/iam-config.service.spec.js +0 -106
  165. package/fesm/services/iam-datasource.service.js +0 -78
  166. package/fesm/services/iam-datasource.service.spec.js +0 -106
  167. package/fesm/services/permission-cache.service.js +0 -527
  168. package/fesm/services/permission-cache.service.spec.js +0 -714
  169. package/fesm/services/permission.service.js +0 -904
  170. package/fesm/services/permission.service.spec.js +0 -914
  171. package/fesm/services/role.service.js +0 -214
  172. package/fesm/services/role.service.spec.js +0 -343
  173. package/fesm/types/logic-node.type.js +0 -27
@@ -1,914 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "PermissionService", {
6
- enumerable: true,
7
- get: function() {
8
- return PermissionService;
9
- }
10
- });
11
- const _nestjsshared = require("@flusys/nestjs-shared");
12
- const _classes = require("@flusys/nestjs-shared/classes");
13
- const _common = require("@nestjs/common");
14
- const _typeorm = require("typeorm");
15
- const _config = require("../config");
16
- const _permissiondto = require("../dtos/permission.dto");
17
- const _actionentity = require("../entities/action.entity");
18
- const _permissionwithcompanyentity = require("../entities/permission-with-company.entity");
19
- const _rolewithcompanyentity = require("../entities/role-with-company.entity");
20
- const _roleentity = require("../entities/role.entity");
21
- const _useriampermissionentity = require("../entities/user-iam-permission.entity");
22
- const _iamentitytypeenum = require("../enums/iam-entity-type.enum");
23
- const _iampermissiontypeenum = require("../enums/iam-permission-type.enum");
24
- const _iamconfigservice = require("./iam-config.service");
25
- const _iamdatasourceservice = require("./iam-datasource.service");
26
- const _permissioncacheservice = require("./permission-cache.service");
27
- function _define_property(obj, key, value) {
28
- if (key in obj) {
29
- Object.defineProperty(obj, key, {
30
- value: value,
31
- enumerable: true,
32
- configurable: true,
33
- writable: true
34
- });
35
- } else {
36
- obj[key] = value;
37
- }
38
- return obj;
39
- }
40
- function _ts_decorate(decorators, target, key, desc) {
41
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43
- 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;
44
- return c > 3 && r && Object.defineProperty(target, key, r), r;
45
- }
46
- function _ts_metadata(k, v) {
47
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
48
- }
49
- function _ts_param(paramIndex, decorator) {
50
- return function(target, key) {
51
- decorator(target, key, paramIndex);
52
- };
53
- }
54
- let PermissionService = class PermissionService {
55
- // Repository Getters
56
- async getPermissionRepository() {
57
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
58
- const entity = enableCompanyFeature ? _permissionwithcompanyentity.UserIamPermissionWithCompany : _useriampermissionentity.UserIamPermission;
59
- return this.dataSourceProvider.getRepository(entity);
60
- }
61
- async getActionRepository() {
62
- return this.dataSourceProvider.getRepository(_actionentity.Action);
63
- }
64
- async getRoleRepository() {
65
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
66
- const entity = enableCompanyFeature ? _rolewithcompanyentity.RoleWithCompany : _roleentity.Role;
67
- return this.dataSourceProvider.getRepository(entity);
68
- }
69
- async getActionsMap(actionIds) {
70
- const actionRepo = await this.getActionRepository();
71
- const actions = await actionRepo.find({
72
- where: {
73
- id: (0, _typeorm.In)(actionIds)
74
- }
75
- });
76
- return new Map(actions.map((a)=>[
77
- a.id,
78
- a
79
- ]));
80
- }
81
- // User-Action Permissions
82
- async assignUserActions(dto) {
83
- if (!this.iamConfigService.isDirectPermissionEnabled()) {
84
- throw new _common.BadRequestException({
85
- message: 'Direct permission assignment not available in RBAC-only mode. Use role-based permissions instead.',
86
- messageKey: _config.IAM_MODE_MESSAGES.DIRECT_MODE_UNAVAILABLE
87
- });
88
- }
89
- const permissionRepo = await this.getPermissionRepository();
90
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
91
- const branchId = dto.branchId ?? null;
92
- const companyId = dto.companyId ?? null;
93
- const { toAdd: itemsToAdd, toRemove: itemsToRemove } = this.splitItemsByAction(dto.items);
94
- let added = 0;
95
- let removed = 0;
96
- if (itemsToAdd.length > 0) {
97
- const actionIdsToAdd = itemsToAdd.map((item)=>item.id);
98
- const whereFind = {
99
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ACTION,
100
- sourceType: _iamentitytypeenum.IamEntityType.USER,
101
- sourceId: dto.userId,
102
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
103
- targetId: (0, _typeorm.In)(actionIdsToAdd)
104
- };
105
- if (enableCompanyFeature) {
106
- if (companyId) whereFind.companyId = companyId;
107
- if (branchId) whereFind.branchId = branchId;
108
- }
109
- const existingPermissions = await permissionRepo.find({
110
- where: whereFind,
111
- select: [
112
- 'targetId'
113
- ]
114
- });
115
- const existingActionIds = new Set(existingPermissions.map((p)=>p.targetId));
116
- const newPermissions = itemsToAdd.filter((item)=>!existingActionIds.has(item.id)).map((item)=>({
117
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ACTION,
118
- sourceType: _iamentitytypeenum.IamEntityType.USER,
119
- sourceId: dto.userId,
120
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
121
- targetId: item.id,
122
- companyId: enableCompanyFeature ? companyId : null,
123
- branchId: enableCompanyFeature ? branchId : null
124
- }));
125
- if (newPermissions.length > 0) {
126
- try {
127
- await permissionRepo.save(newPermissions);
128
- added = newPermissions.length;
129
- } catch (error) {
130
- if (error?.code === 'ER_DUP_ENTRY' || error?.message?.includes('Duplicate entry')) {
131
- throw new _common.ConflictException({
132
- message: 'Some permissions already exist for this user. Please refresh and try again.',
133
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.ALREADY_EXISTS
134
- });
135
- }
136
- throw error;
137
- }
138
- }
139
- }
140
- if (itemsToRemove.length > 0) {
141
- const actionIdsToRemove = itemsToRemove.map((item)=>item.id);
142
- const whereDelete = {
143
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ACTION,
144
- sourceType: _iamentitytypeenum.IamEntityType.USER,
145
- sourceId: dto.userId,
146
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
147
- targetId: (0, _typeorm.In)(actionIdsToRemove)
148
- };
149
- if (enableCompanyFeature) {
150
- if (companyId) whereDelete.companyId = companyId;
151
- if (branchId) whereDelete.branchId = branchId;
152
- }
153
- const result = await permissionRepo.delete(whereDelete);
154
- removed = result.affected || 0;
155
- }
156
- await this.permissionCacheService.invalidateUser(dto.userId, enableCompanyFeature ? companyId : null, enableCompanyFeature ? [
157
- branchId
158
- ] : []);
159
- const result = this.buildOperationResult(dto.items.length, added, removed);
160
- await this.publishAssignmentEvent(_config.IAM_EVENT_ENTITIES.USER_ACTION, dto.userId, result);
161
- return result;
162
- }
163
- async getUserActions(userId, companyId, branchId) {
164
- const permissionRepo = await this.getPermissionRepository();
165
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
166
- const where = {
167
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ACTION,
168
- sourceType: _iamentitytypeenum.IamEntityType.USER,
169
- sourceId: userId
170
- };
171
- if (enableCompanyFeature) {
172
- if (companyId) where.companyId = companyId;
173
- if (branchId) where.branchId = branchId;
174
- }
175
- const permissions = await permissionRepo.find({
176
- where
177
- });
178
- if (permissions.length === 0) {
179
- return [];
180
- }
181
- const actionIds = permissions.map((p)=>p.targetId);
182
- const actionMap = await this.getActionsMap(actionIds);
183
- return permissions.filter((p)=>actionMap.has(p.targetId)).map((p)=>{
184
- const action = actionMap.get(p.targetId);
185
- return {
186
- id: p.id,
187
- userId: p.sourceId,
188
- actionId: action.id,
189
- actionCode: action.code ?? '',
190
- actionName: action.name,
191
- companyId: ('companyId' in p ? p.companyId : null) ?? null,
192
- branchId: ('branchId' in p ? p.branchId : null) ?? null,
193
- createdAt: p.createdAt
194
- };
195
- });
196
- }
197
- // Role-Action Permissions
198
- async assignRoleActions(dto) {
199
- if (!this.iamConfigService.isRbacEnabled()) {
200
- throw new _common.BadRequestException({
201
- message: 'Role-based permission assignment not available in DIRECT-only mode. Use direct user permissions instead.',
202
- messageKey: _config.IAM_MODE_MESSAGES.RBAC_MODE_UNAVAILABLE
203
- });
204
- }
205
- const permissionRepo = await this.getPermissionRepository();
206
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
207
- let roleCompanyId = null;
208
- if (enableCompanyFeature) {
209
- const roleRepo = await this.getRoleRepository();
210
- const role = await roleRepo.findOne({
211
- where: {
212
- id: dto.roleId
213
- },
214
- select: [
215
- 'id',
216
- 'companyId'
217
- ]
218
- });
219
- roleCompanyId = role?.companyId ?? null;
220
- }
221
- const { toAdd: itemsToAdd, toRemove: itemsToRemove } = this.splitItemsByAction(dto.items);
222
- let added = 0;
223
- let removed = 0;
224
- if (itemsToAdd.length > 0) {
225
- const actionIdsToAdd = itemsToAdd.map((item)=>item.id);
226
- const existingPermissions = await permissionRepo.find({
227
- where: {
228
- permissionType: _iampermissiontypeenum.IamPermissionType.ROLE_ACTION,
229
- sourceType: _iamentitytypeenum.IamEntityType.ROLE,
230
- sourceId: dto.roleId,
231
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
232
- targetId: (0, _typeorm.In)(actionIdsToAdd)
233
- },
234
- select: [
235
- 'targetId'
236
- ]
237
- });
238
- const existingActionIds = new Set(existingPermissions.map((p)=>p.targetId));
239
- const newPermissions = itemsToAdd.filter((item)=>!existingActionIds.has(item.id)).map((item)=>({
240
- permissionType: _iampermissiontypeenum.IamPermissionType.ROLE_ACTION,
241
- sourceType: _iamentitytypeenum.IamEntityType.ROLE,
242
- sourceId: dto.roleId,
243
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
244
- targetId: item.id,
245
- companyId: enableCompanyFeature ? roleCompanyId : null,
246
- branchId: null
247
- }));
248
- if (newPermissions.length > 0) {
249
- try {
250
- await permissionRepo.save(newPermissions);
251
- added = newPermissions.length;
252
- } catch (error) {
253
- if (error?.code === 'ER_DUP_ENTRY' || error?.message?.includes('Duplicate entry')) {
254
- throw new _common.ConflictException({
255
- message: 'Some role-action permissions already exist. Please refresh and try again.',
256
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.ALREADY_EXISTS
257
- });
258
- }
259
- throw error;
260
- }
261
- }
262
- }
263
- if (itemsToRemove.length > 0) {
264
- const actionIdsToRemove = itemsToRemove.map((item)=>item.id);
265
- const result = await permissionRepo.delete({
266
- permissionType: _iampermissiontypeenum.IamPermissionType.ROLE_ACTION,
267
- sourceType: _iamentitytypeenum.IamEntityType.ROLE,
268
- sourceId: dto.roleId,
269
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
270
- targetId: (0, _typeorm.In)(actionIdsToRemove)
271
- });
272
- removed = result.affected || 0;
273
- }
274
- await this.permissionCacheService.invalidateRoleMembersCache(dto.roleId);
275
- const result = this.buildOperationResult(dto.items.length, added, removed);
276
- await this.publishAssignmentEvent(_config.IAM_EVENT_ENTITIES.ROLE_ACTION, dto.roleId, result);
277
- return result;
278
- }
279
- async getRoleActions(roleId) {
280
- const permissionRepo = await this.getPermissionRepository();
281
- const permissions = await permissionRepo.find({
282
- where: {
283
- permissionType: _iampermissiontypeenum.IamPermissionType.ROLE_ACTION,
284
- sourceType: _iamentitytypeenum.IamEntityType.ROLE,
285
- sourceId: roleId
286
- }
287
- });
288
- if (permissions.length === 0) {
289
- return [];
290
- }
291
- const actionIds = permissions.map((p)=>p.targetId);
292
- const actionMap = await this.getActionsMap(actionIds);
293
- return permissions.filter((p)=>actionMap.has(p.targetId)).map((p)=>{
294
- const action = actionMap.get(p.targetId);
295
- return {
296
- id: p.id,
297
- roleId: p.sourceId,
298
- actionId: action.id,
299
- actionCode: action.code ?? '',
300
- actionName: action.name,
301
- createdAt: p.createdAt
302
- };
303
- });
304
- }
305
- // Company-Action Permissions (Whitelist)
306
- /** Assign or remove actions to/from a company (whitelist) */ async assignCompanyActions(dto) {
307
- const permissionRepo = await this.getPermissionRepository();
308
- const dataSource = await this.dataSourceProvider.getDataSource();
309
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
310
- const { toAdd: itemsToAdd, toRemove: itemsToRemove } = this.splitItemsByAction(dto.items);
311
- let added = 0;
312
- let removed = 0;
313
- await dataSource.transaction(async (manager)=>{
314
- const transactionalPermissionRepo = manager.getRepository(permissionRepo.target);
315
- if (itemsToAdd.length > 0) {
316
- const actionIdsToAdd = itemsToAdd.map((item)=>item.id);
317
- const existingPermissions = await transactionalPermissionRepo.find({
318
- where: {
319
- permissionType: _iampermissiontypeenum.IamPermissionType.COMPANY_ACTION,
320
- sourceType: _iamentitytypeenum.IamEntityType.COMPANY,
321
- sourceId: dto.companyId,
322
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
323
- targetId: (0, _typeorm.In)(actionIdsToAdd)
324
- },
325
- select: [
326
- 'targetId'
327
- ]
328
- });
329
- const existingActionIds = new Set(existingPermissions.map((p)=>p.targetId));
330
- const newActionIds = actionIdsToAdd.filter((id)=>!existingActionIds.has(id));
331
- if (newActionIds.length > 0) {
332
- const newPermissions = newActionIds.map((actionId)=>transactionalPermissionRepo.create({
333
- permissionType: _iampermissiontypeenum.IamPermissionType.COMPANY_ACTION,
334
- sourceType: _iamentitytypeenum.IamEntityType.COMPANY,
335
- sourceId: dto.companyId,
336
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
337
- targetId: actionId
338
- }));
339
- await transactionalPermissionRepo.save(newPermissions);
340
- added = newPermissions.length;
341
- }
342
- }
343
- if (itemsToRemove.length > 0) {
344
- const actionIdsToRemove = itemsToRemove.map((item)=>item.id);
345
- const companyResult = await transactionalPermissionRepo.delete({
346
- permissionType: _iampermissiontypeenum.IamPermissionType.COMPANY_ACTION,
347
- sourceType: _iamentitytypeenum.IamEntityType.COMPANY,
348
- sourceId: dto.companyId,
349
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
350
- targetId: (0, _typeorm.In)(actionIdsToRemove)
351
- });
352
- removed = companyResult.affected || 0;
353
- // Cascade: an action no longer on the company whitelist must not remain
354
- // reachable via role grants or direct user grants scoped to this company.
355
- const roleEntity = enableCompanyFeature ? _rolewithcompanyentity.RoleWithCompany : _roleentity.Role;
356
- const roleRepo = manager.getRepository(roleEntity);
357
- const companyRoles = await roleRepo.find({
358
- where: {
359
- companyId: dto.companyId,
360
- deletedAt: (0, _typeorm.IsNull)()
361
- },
362
- select: [
363
- 'id'
364
- ]
365
- });
366
- if (companyRoles.length > 0) {
367
- const roleIds = companyRoles.map((role)=>role.id);
368
- await transactionalPermissionRepo.delete({
369
- permissionType: _iampermissiontypeenum.IamPermissionType.ROLE_ACTION,
370
- sourceType: _iamentitytypeenum.IamEntityType.ROLE,
371
- sourceId: (0, _typeorm.In)(roleIds),
372
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
373
- targetId: (0, _typeorm.In)(actionIdsToRemove)
374
- });
375
- }
376
- if (enableCompanyFeature) {
377
- await transactionalPermissionRepo.delete({
378
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ACTION,
379
- companyId: dto.companyId,
380
- targetType: _iamentitytypeenum.IamEntityType.ACTION,
381
- targetId: (0, _typeorm.In)(actionIdsToRemove)
382
- });
383
- }
384
- }
385
- });
386
- await this.permissionCacheService.invalidateCompanyMembersCache(dto.companyId);
387
- const result = this.buildOperationResult(dto.items.length, added, removed);
388
- await this.publishAssignmentEvent(_config.IAM_EVENT_ENTITIES.COMPANY_ACTION, dto.companyId, result);
389
- return result;
390
- }
391
- /** Get all actions assigned to a company (whitelist) */ async getCompanyActions(companyId, isOnlyId = false) {
392
- const permissionRepo = await this.getPermissionRepository();
393
- const permissions = await permissionRepo.find({
394
- where: {
395
- permissionType: _iampermissiontypeenum.IamPermissionType.COMPANY_ACTION,
396
- sourceType: _iamentitytypeenum.IamEntityType.COMPANY,
397
- sourceId: companyId
398
- }
399
- });
400
- if (permissions.length === 0) {
401
- return [];
402
- }
403
- const actionIds = permissions.map((p)=>p.targetId);
404
- if (isOnlyId) return actionIds;
405
- const actionMap = await this.getActionsMap(actionIds);
406
- return permissions.filter((p)=>actionMap.has(p.targetId)).map((p)=>{
407
- const action = actionMap.get(p.targetId);
408
- return {
409
- id: p.id,
410
- companyId: companyId,
411
- actionId: action.id,
412
- actionCode: action.code ?? '',
413
- actionName: action.name,
414
- createdAt: p.createdAt
415
- };
416
- });
417
- }
418
- // User-Role Permissions
419
- /** Assign user to roles (branch-scoped when company feature is enabled) */ async assignUserRoles(dto) {
420
- if (!this.iamConfigService.isRbacEnabled()) {
421
- throw new _common.BadRequestException({
422
- message: 'Role assignment not available in DIRECT-only mode. Use direct user permissions instead.',
423
- messageKey: _config.IAM_MODE_MESSAGES.ROLE_ASSIGNMENT_UNAVAILABLE
424
- });
425
- }
426
- const permissionRepo = await this.getPermissionRepository();
427
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
428
- const branchId = dto.branchId ?? null;
429
- const companyId = dto.companyId ?? null;
430
- const { toAdd: itemsToAdd, toRemove: itemsToRemove } = this.splitItemsByAction(dto.items);
431
- let added = 0;
432
- let removed = 0;
433
- if (itemsToAdd.length > 0) {
434
- const roleIdsToAdd = itemsToAdd.map((item)=>item.id);
435
- const whereFind = {
436
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ROLE,
437
- sourceType: _iamentitytypeenum.IamEntityType.USER,
438
- sourceId: dto.userId,
439
- targetType: _iamentitytypeenum.IamEntityType.ROLE,
440
- targetId: (0, _typeorm.In)(roleIdsToAdd)
441
- };
442
- if (enableCompanyFeature) {
443
- if (companyId) whereFind.companyId = companyId;
444
- if (branchId) whereFind.branchId = branchId;
445
- }
446
- const existingPermissions = await permissionRepo.find({
447
- where: whereFind,
448
- select: [
449
- 'targetId'
450
- ]
451
- });
452
- const existingRoleIds = new Set(existingPermissions.map((p)=>p.targetId));
453
- const newPermissions = itemsToAdd.filter((item)=>!existingRoleIds.has(item.id)).map((item)=>({
454
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ROLE,
455
- sourceType: _iamentitytypeenum.IamEntityType.USER,
456
- sourceId: dto.userId,
457
- targetType: _iamentitytypeenum.IamEntityType.ROLE,
458
- targetId: item.id,
459
- companyId: enableCompanyFeature ? companyId : null,
460
- branchId: enableCompanyFeature ? branchId : null
461
- }));
462
- if (newPermissions.length > 0) {
463
- try {
464
- await permissionRepo.save(newPermissions);
465
- added = newPermissions.length;
466
- } catch (error) {
467
- if (error?.code === 'ER_DUP_ENTRY' || error?.message?.includes('Duplicate entry')) {
468
- throw new _common.ConflictException({
469
- message: 'Some user-role permissions already exist. Please refresh and try again.',
470
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.ALREADY_EXISTS
471
- });
472
- }
473
- throw error;
474
- }
475
- }
476
- }
477
- if (itemsToRemove.length > 0) {
478
- const roleIdsToRemove = itemsToRemove.map((item)=>item.id);
479
- const whereDelete = {
480
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ROLE,
481
- sourceType: _iamentitytypeenum.IamEntityType.USER,
482
- sourceId: dto.userId,
483
- targetType: _iamentitytypeenum.IamEntityType.ROLE,
484
- targetId: (0, _typeorm.In)(roleIdsToRemove)
485
- };
486
- if (enableCompanyFeature) {
487
- if (companyId) whereDelete.companyId = companyId;
488
- if (branchId) whereDelete.branchId = branchId;
489
- }
490
- const result = await permissionRepo.delete(whereDelete);
491
- removed = result.affected || 0;
492
- }
493
- await this.permissionCacheService.invalidateUser(dto.userId, enableCompanyFeature ? companyId : null, [
494
- branchId
495
- ]);
496
- const result = this.buildOperationResult(dto.items.length, added, removed);
497
- await this.publishAssignmentEvent(_config.IAM_EVENT_ENTITIES.USER_ROLE, dto.userId, result);
498
- return result;
499
- }
500
- /** Get user's roles (branch-scoped, filtered by companyId and branchId if provided) */ async getUserRoles(userId, branchId, companyId) {
501
- const permissionRepo = await this.getPermissionRepository();
502
- const roleRepo = await this.getRoleRepository();
503
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
504
- const where = {
505
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ROLE,
506
- sourceType: _iamentitytypeenum.IamEntityType.USER,
507
- sourceId: userId
508
- };
509
- if (enableCompanyFeature) {
510
- if (companyId) where.companyId = companyId;
511
- if (branchId) where.branchId = branchId;
512
- }
513
- const permissions = await permissionRepo.find({
514
- where
515
- });
516
- if (permissions.length === 0) {
517
- return [];
518
- }
519
- const roleIds = permissions.map((p)=>p.targetId);
520
- const roleWhere = {
521
- id: (0, _typeorm.In)(roleIds)
522
- };
523
- const roles = await roleRepo.find({
524
- where: roleWhere
525
- });
526
- const roleMap = new Map(roles.map((r)=>[
527
- r.id,
528
- r
529
- ]));
530
- return permissions.filter((p)=>roleMap.has(p.targetId)).map((p)=>{
531
- const role = roleMap.get(p.targetId);
532
- const permissionEntity = p;
533
- return {
534
- id: p.id,
535
- userId: p.sourceId,
536
- roleId: role.id,
537
- roleName: role.name,
538
- branchId: enableCompanyFeature ? permissionEntity.branchId ?? null : null,
539
- createdAt: p.createdAt
540
- };
541
- });
542
- }
543
- // Effective (Merged) Permissions — self-scoped, company-wide + branch-specific
544
- /** Get user's effective roles: company-wide (branchId null) merged with branch-specific */ async getUserEffectiveRoles(userId, companyId, branchId) {
545
- const permissionRepo = await this.getPermissionRepository();
546
- const roleRepo = await this.getRoleRepository();
547
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
548
- const baseWhere = {
549
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ROLE,
550
- sourceType: _iamentitytypeenum.IamEntityType.USER,
551
- sourceId: userId
552
- };
553
- if (enableCompanyFeature && companyId) baseWhere.companyId = companyId;
554
- const permissions = enableCompanyFeature && branchId ? await permissionRepo.find({
555
- where: [
556
- {
557
- ...baseWhere,
558
- branchId: (0, _typeorm.IsNull)()
559
- },
560
- {
561
- ...baseWhere,
562
- branchId
563
- }
564
- ]
565
- }) : await permissionRepo.find({
566
- where: baseWhere
567
- });
568
- const validPermissions = permissions.filter((p)=>p.isValid());
569
- if (validPermissions.length === 0) {
570
- return [];
571
- }
572
- const roleIds = [
573
- ...new Set(validPermissions.map((p)=>p.targetId))
574
- ];
575
- const roles = await roleRepo.find({
576
- where: {
577
- id: (0, _typeorm.In)(roleIds)
578
- }
579
- });
580
- const roleMap = new Map(roles.map((r)=>[
581
- r.id,
582
- r
583
- ]));
584
- return validPermissions.filter((p)=>roleMap.has(p.targetId)).map((p)=>{
585
- const role = roleMap.get(p.targetId);
586
- return {
587
- id: p.id,
588
- userId: p.sourceId,
589
- roleId: role.id,
590
- roleName: role.name,
591
- branchId: enableCompanyFeature ? p.branchId ?? null : null,
592
- createdAt: p.createdAt
593
- };
594
- });
595
- }
596
- /** Get user's effective actions: company-wide (branchId null) merged with branch-specific */ async getUserEffectiveActions(userId, companyId, branchId) {
597
- const permissionRepo = await this.getPermissionRepository();
598
- const enableCompanyFeature = this.iamConfigService.isCompanyFeatureEnabled();
599
- const baseWhere = {
600
- permissionType: _iampermissiontypeenum.IamPermissionType.USER_ACTION,
601
- sourceType: _iamentitytypeenum.IamEntityType.USER,
602
- sourceId: userId
603
- };
604
- if (enableCompanyFeature && companyId) baseWhere.companyId = companyId;
605
- const permissions = enableCompanyFeature && branchId ? await permissionRepo.find({
606
- where: [
607
- {
608
- ...baseWhere,
609
- branchId: (0, _typeorm.IsNull)()
610
- },
611
- {
612
- ...baseWhere,
613
- branchId
614
- }
615
- ]
616
- }) : await permissionRepo.find({
617
- where: baseWhere
618
- });
619
- const validPermissions = permissions.filter((p)=>p.isValid());
620
- if (validPermissions.length === 0) {
621
- return [];
622
- }
623
- const actionIds = [
624
- ...new Set(validPermissions.map((p)=>p.targetId))
625
- ];
626
- const actionMap = await this.getActionsMap(actionIds);
627
- return validPermissions.filter((p)=>actionMap.has(p.targetId)).map((p)=>{
628
- const action = actionMap.get(p.targetId);
629
- return {
630
- id: p.id,
631
- userId: p.sourceId,
632
- actionId: action.id,
633
- actionCode: action.code ?? '',
634
- actionName: action.name,
635
- companyId: ('companyId' in p ? p.companyId : null) ?? null,
636
- branchId: ('branchId' in p ? p.branchId : null) ?? null,
637
- createdAt: p.createdAt
638
- };
639
- });
640
- }
641
- // My Permissions
642
- /** Get user's effective permissions (cache-first approach) */ async getMyPermissions(userId, branchId, companyId, parentCodes) {
643
- return this.permissionCacheService.getMyPermissionsResponse(userId, branchId, companyId, parentCodes);
644
- }
645
- // Helper Methods
646
- /** Split permission items into add and remove arrays */ splitItemsByAction(items) {
647
- return {
648
- toAdd: items.filter((item)=>item.action === _permissiondto.PermissionAction.ADD),
649
- toRemove: items.filter((item)=>item.action === _permissiondto.PermissionAction.REMOVE)
650
- };
651
- }
652
- async publishAssignmentEvent(entity, targetId, result) {
653
- await (0, _classes.publishDomainEvent)({
654
- module: _config.IAM_EVENT_MODULE,
655
- entity,
656
- action: _config.IAM_EVENT_ACTIONS.PERMISSIONS_ASSIGNED,
657
- ids: [
658
- targetId
659
- ],
660
- metadata: {
661
- added: result.added,
662
- removed: result.removed,
663
- total: result.total
664
- }
665
- });
666
- }
667
- /** Build standard operation result DTO */ buildOperationResult(_totalItems, added, removed) {
668
- return {
669
- added,
670
- removed,
671
- total: _totalItems
672
- };
673
- }
674
- async revokeCompanyPermissions(companyId) {
675
- if (!this.iamConfigService.isCompanyFeatureEnabled()) {
676
- return;
677
- }
678
- const permissionRepo = await this.getPermissionRepository();
679
- const roleRepo = await this.getRoleRepository();
680
- const dataSource = await this.dataSourceProvider.getDataSource();
681
- const companyRoles = await roleRepo.find({
682
- where: {
683
- companyId,
684
- deletedAt: (0, _typeorm.IsNull)()
685
- },
686
- select: [
687
- 'id'
688
- ]
689
- });
690
- const roleIds = companyRoles.map((role)=>role.id);
691
- const affectedUserRows = await permissionRepo.find({
692
- where: {
693
- permissionType: (0, _typeorm.In)([
694
- _iampermissiontypeenum.IamPermissionType.USER_ROLE,
695
- _iampermissiontypeenum.IamPermissionType.USER_ACTION
696
- ]),
697
- sourceType: _iamentitytypeenum.IamEntityType.USER,
698
- companyId
699
- },
700
- select: [
701
- 'sourceId'
702
- ]
703
- });
704
- const affectedUserIds = [
705
- ...new Set(affectedUserRows.map((row)=>row.sourceId))
706
- ];
707
- await dataSource.transaction(async (manager)=>{
708
- const txRepo = manager.getRepository(permissionRepo.target);
709
- await txRepo.delete({
710
- permissionType: _iampermissiontypeenum.IamPermissionType.COMPANY_ACTION,
711
- sourceType: _iamentitytypeenum.IamEntityType.COMPANY,
712
- sourceId: companyId
713
- });
714
- if (roleIds.length > 0) {
715
- await txRepo.delete({
716
- permissionType: _iampermissiontypeenum.IamPermissionType.ROLE_ACTION,
717
- sourceType: _iamentitytypeenum.IamEntityType.ROLE,
718
- sourceId: (0, _typeorm.In)(roleIds)
719
- });
720
- }
721
- await txRepo.delete({
722
- permissionType: (0, _typeorm.In)([
723
- _iampermissiontypeenum.IamPermissionType.USER_ROLE,
724
- _iampermissiontypeenum.IamPermissionType.USER_ACTION
725
- ]),
726
- companyId
727
- });
728
- if (roleIds.length > 0) {
729
- const txRoleRepo = manager.getRepository(roleRepo.target);
730
- await txRoleRepo.delete(roleIds);
731
- }
732
- });
733
- if (affectedUserIds.length > 0) {
734
- await this.permissionCacheService.invalidateUsers(affectedUserIds, companyId);
735
- }
736
- }
737
- async revokeBranchPermissions(branchId, companyId) {
738
- if (!this.iamConfigService.isCompanyFeatureEnabled()) {
739
- return;
740
- }
741
- const permissionRepo = await this.getPermissionRepository();
742
- const where = {
743
- permissionType: (0, _typeorm.In)([
744
- _iampermissiontypeenum.IamPermissionType.USER_ROLE,
745
- _iampermissiontypeenum.IamPermissionType.USER_ACTION
746
- ]),
747
- companyId,
748
- branchId
749
- };
750
- const affectedUserRows = await permissionRepo.find({
751
- where: {
752
- ...where,
753
- sourceType: _iamentitytypeenum.IamEntityType.USER
754
- },
755
- select: [
756
- 'sourceId'
757
- ]
758
- });
759
- const affectedUserIds = [
760
- ...new Set(affectedUserRows.map((row)=>row.sourceId))
761
- ];
762
- await permissionRepo.delete(where);
763
- if (affectedUserIds.length > 0) {
764
- await this.permissionCacheService.invalidateUsers(affectedUserIds, companyId, [
765
- branchId
766
- ]);
767
- }
768
- }
769
- async revokeUserCompanyAccess(userId, companyId) {
770
- const permissionRepo = await this.getPermissionRepository();
771
- await permissionRepo.delete({
772
- permissionType: (0, _typeorm.In)([
773
- _iampermissiontypeenum.IamPermissionType.USER_ROLE,
774
- _iampermissiontypeenum.IamPermissionType.USER_ACTION
775
- ]),
776
- sourceType: _iamentitytypeenum.IamEntityType.USER,
777
- sourceId: userId,
778
- companyId
779
- });
780
- await this.permissionCacheService.invalidateUser(userId, companyId);
781
- }
782
- async revokeUserBranchAccess(userId, branchId, companyId) {
783
- const permissionRepo = await this.getPermissionRepository();
784
- const where = {
785
- permissionType: (0, _typeorm.In)([
786
- _iampermissiontypeenum.IamPermissionType.USER_ROLE,
787
- _iampermissiontypeenum.IamPermissionType.USER_ACTION
788
- ]),
789
- sourceType: _iamentitytypeenum.IamEntityType.USER,
790
- sourceId: userId,
791
- branchId,
792
- companyId
793
- };
794
- await permissionRepo.delete(where);
795
- await this.permissionCacheService.invalidateUser(userId, companyId, [
796
- branchId
797
- ]);
798
- }
799
- // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
800
- constructor(permissionCacheService, iamConfigService, dataSourceProvider){
801
- _define_property(this, "permissionCacheService", void 0);
802
- _define_property(this, "iamConfigService", void 0);
803
- _define_property(this, "dataSourceProvider", void 0);
804
- this.permissionCacheService = permissionCacheService;
805
- this.iamConfigService = iamConfigService;
806
- this.dataSourceProvider = dataSourceProvider;
807
- }
808
- };
809
- _ts_decorate([
810
- (0, _nestjsshared.LogAction)({
811
- action: 'iam.assignUserActions',
812
- module: 'iam'
813
- }),
814
- _ts_metadata("design:type", Function),
815
- _ts_metadata("design:paramtypes", [
816
- typeof _permissiondto.AssignUserActionsDto === "undefined" ? Object : _permissiondto.AssignUserActionsDto
817
- ]),
818
- _ts_metadata("design:returntype", Promise)
819
- ], PermissionService.prototype, "assignUserActions", null);
820
- _ts_decorate([
821
- (0, _nestjsshared.LogAction)({
822
- action: 'iam.assignRoleActions',
823
- module: 'iam'
824
- }),
825
- _ts_metadata("design:type", Function),
826
- _ts_metadata("design:paramtypes", [
827
- typeof _permissiondto.AssignRoleActionsDto === "undefined" ? Object : _permissiondto.AssignRoleActionsDto
828
- ]),
829
- _ts_metadata("design:returntype", Promise)
830
- ], PermissionService.prototype, "assignRoleActions", null);
831
- _ts_decorate([
832
- (0, _nestjsshared.LogAction)({
833
- action: 'iam.assignCompanyActions',
834
- module: 'iam'
835
- }),
836
- _ts_metadata("design:type", Function),
837
- _ts_metadata("design:paramtypes", [
838
- typeof _permissiondto.AssignCompanyActionsDto === "undefined" ? Object : _permissiondto.AssignCompanyActionsDto
839
- ]),
840
- _ts_metadata("design:returntype", Promise)
841
- ], PermissionService.prototype, "assignCompanyActions", null);
842
- _ts_decorate([
843
- (0, _nestjsshared.LogAction)({
844
- action: 'iam.assignUserRoles',
845
- module: 'iam'
846
- }),
847
- _ts_metadata("design:type", Function),
848
- _ts_metadata("design:paramtypes", [
849
- typeof _permissiondto.AssignUserRolesDto === "undefined" ? Object : _permissiondto.AssignUserRolesDto
850
- ]),
851
- _ts_metadata("design:returntype", Promise)
852
- ], PermissionService.prototype, "assignUserRoles", null);
853
- _ts_decorate([
854
- (0, _nestjsshared.LogAction)({
855
- action: 'iam.revokeCompanyPermissions',
856
- module: 'iam'
857
- }),
858
- _ts_metadata("design:type", Function),
859
- _ts_metadata("design:paramtypes", [
860
- String
861
- ]),
862
- _ts_metadata("design:returntype", Promise)
863
- ], PermissionService.prototype, "revokeCompanyPermissions", null);
864
- _ts_decorate([
865
- (0, _nestjsshared.LogAction)({
866
- action: 'iam.revokeBranchPermissions',
867
- module: 'iam'
868
- }),
869
- _ts_metadata("design:type", Function),
870
- _ts_metadata("design:paramtypes", [
871
- String,
872
- String
873
- ]),
874
- _ts_metadata("design:returntype", Promise)
875
- ], PermissionService.prototype, "revokeBranchPermissions", null);
876
- _ts_decorate([
877
- (0, _nestjsshared.LogAction)({
878
- action: 'iam.revokeUserCompanyAccess',
879
- module: 'iam'
880
- }),
881
- _ts_metadata("design:type", Function),
882
- _ts_metadata("design:paramtypes", [
883
- String,
884
- String
885
- ]),
886
- _ts_metadata("design:returntype", Promise)
887
- ], PermissionService.prototype, "revokeUserCompanyAccess", null);
888
- _ts_decorate([
889
- (0, _nestjsshared.LogAction)({
890
- action: 'iam.revokeUserBranchAccess',
891
- module: 'iam'
892
- }),
893
- _ts_metadata("design:type", Function),
894
- _ts_metadata("design:paramtypes", [
895
- String,
896
- String,
897
- String
898
- ]),
899
- _ts_metadata("design:returntype", Promise)
900
- ], PermissionService.prototype, "revokeUserBranchAccess", null);
901
- PermissionService = _ts_decorate([
902
- (0, _common.Injectable)({
903
- scope: _common.Scope.REQUEST
904
- }),
905
- _ts_param(0, (0, _common.Inject)(_permissioncacheservice.PermissionCacheService)),
906
- _ts_param(1, (0, _common.Inject)(_iamconfigservice.IAMConfigService)),
907
- _ts_param(2, (0, _common.Inject)(_iamdatasourceservice.IAMDataSourceService)),
908
- _ts_metadata("design:type", Function),
909
- _ts_metadata("design:paramtypes", [
910
- typeof _permissioncacheservice.PermissionCacheService === "undefined" ? Object : _permissioncacheservice.PermissionCacheService,
911
- typeof _iamconfigservice.IAMConfigService === "undefined" ? Object : _iamconfigservice.IAMConfigService,
912
- typeof _iamdatasourceservice.IAMDataSourceService === "undefined" ? Object : _iamdatasourceservice.IAMDataSourceService
913
- ])
914
- ], PermissionService);