@flusys/nestjs-iam 7.1.0 → 8.0.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.
Files changed (175) hide show
  1. package/config/index.d.ts +3 -3
  2. package/config/message-keys.d.ts +2 -0
  3. package/controllers/action.controller.d.ts +4 -4
  4. package/controllers/company-action-permission.controller.d.ts +2 -2
  5. package/controllers/index.d.ts +6 -6
  6. package/controllers/my-permission.controller.d.ts +3 -3
  7. package/controllers/role-permission.controller.d.ts +5 -4
  8. package/controllers/role.controller.d.ts +2 -2
  9. package/controllers/user-action-permission.controller.d.ts +5 -4
  10. package/docs/iam-swagger.config.d.ts +2 -2
  11. package/docs/index.d.ts +1 -1
  12. package/dtos/action.dto.d.ts +2 -2
  13. package/dtos/index.d.ts +3 -3
  14. package/dtos/permission.dto.d.ts +16 -0
  15. package/entities/action.entity.d.ts +2 -2
  16. package/entities/index.d.ts +11 -11
  17. package/entities/permission-with-company.entity.d.ts +1 -1
  18. package/entities/role-with-company.entity.d.ts +1 -1
  19. package/entities/role.entity.d.ts +1 -1
  20. package/entities/user-iam-permission.entity.d.ts +1 -1
  21. package/enums/index.d.ts +4 -4
  22. package/fesm/284.js +1316 -0
  23. package/fesm/867.js +3801 -0
  24. package/fesm/chunks/364.js +86 -0
  25. package/fesm/config/index.js +135 -3
  26. package/fesm/controllers/index.js +18 -7
  27. package/fesm/docs/index.js +240 -1
  28. package/fesm/dtos/index.js +1168 -3
  29. package/fesm/entities/index.js +670 -31
  30. package/fesm/enums/index.js +97 -4
  31. package/fesm/helpers/index.js +125 -2
  32. package/fesm/index.js +818 -11
  33. package/fesm/interfaces/index.js +17 -3
  34. package/fesm/modules/index.js +259 -1
  35. package/fesm/runtime.js +134 -0
  36. package/fesm/services/index.js +43 -6
  37. package/fesm/types/index.js +15 -1
  38. package/helpers/company-access.helper.d.ts +2 -2
  39. package/helpers/index.d.ts +2 -2
  40. package/helpers/permission-mode.helper.d.ts +1 -1
  41. package/index.d.ts +11 -11
  42. package/interfaces/action.interface.d.ts +2 -2
  43. package/interfaces/iam-module-options.interface.d.ts +3 -3
  44. package/interfaces/index.d.ts +3 -3
  45. package/modules/iam.module.d.ts +2 -2
  46. package/modules/index.d.ts +1 -1
  47. package/package.json +30 -37
  48. package/services/action.service.d.ts +9 -9
  49. package/services/iam-config.service.d.ts +4 -4
  50. package/services/iam-datasource.service.d.ts +3 -3
  51. package/services/index.d.ts +6 -6
  52. package/services/permission-cache.service.d.ts +5 -5
  53. package/services/permission.service.d.ts +6 -4
  54. package/services/role.service.d.ts +8 -8
  55. package/types/index.d.ts +1 -1
  56. package/cjs/config/event-actions.js +0 -36
  57. package/cjs/config/iam.constants.js +0 -11
  58. package/cjs/config/index.js +0 -20
  59. package/cjs/config/message-keys.js +0 -71
  60. package/cjs/controllers/action.controller.js +0 -174
  61. package/cjs/controllers/action.controller.spec.js +0 -79
  62. package/cjs/controllers/company-action-permission.controller.js +0 -119
  63. package/cjs/controllers/company-action-permission.controller.spec.js +0 -65
  64. package/cjs/controllers/index.js +0 -23
  65. package/cjs/controllers/my-permission.controller.js +0 -147
  66. package/cjs/controllers/my-permission.controller.spec.js +0 -128
  67. package/cjs/controllers/role-permission.controller.js +0 -191
  68. package/cjs/controllers/role-permission.controller.spec.js +0 -140
  69. package/cjs/controllers/role.controller.js +0 -102
  70. package/cjs/controllers/role.controller.spec.js +0 -86
  71. package/cjs/controllers/user-action-permission.controller.js +0 -129
  72. package/cjs/controllers/user-action-permission.controller.spec.js +0 -68
  73. package/cjs/docs/iam-swagger.config.js +0 -209
  74. package/cjs/docs/iam-swagger.config.spec.js +0 -99
  75. package/cjs/docs/index.js +0 -18
  76. package/cjs/dtos/action.dto.js +0 -282
  77. package/cjs/dtos/index.js +0 -21
  78. package/cjs/dtos/permission.dto.js +0 -637
  79. package/cjs/dtos/role.dto.js +0 -155
  80. package/cjs/entities/action.entity.js +0 -138
  81. package/cjs/entities/index.js +0 -80
  82. package/cjs/entities/index.spec.js +0 -56
  83. package/cjs/entities/permission-base.entity.js +0 -107
  84. package/cjs/entities/permission-with-company.entity.js +0 -100
  85. package/cjs/entities/role-base.entity.js +0 -80
  86. package/cjs/entities/role-with-company.entity.js +0 -55
  87. package/cjs/entities/role.entity.js +0 -25
  88. package/cjs/entities/user-iam-permission.entity.js +0 -43
  89. package/cjs/enums/action-type.enum.js +0 -22
  90. package/cjs/enums/iam-entity-type.enum.js +0 -17
  91. package/cjs/enums/iam-permission-type.enum.js +0 -17
  92. package/cjs/enums/index.js +0 -21
  93. package/cjs/enums/permission-type.enum.js +0 -16
  94. package/cjs/helpers/company-access.helper.js +0 -23
  95. package/cjs/helpers/company-access.helper.spec.js +0 -68
  96. package/cjs/helpers/index.js +0 -19
  97. package/cjs/helpers/permission-mode.helper.js +0 -49
  98. package/cjs/helpers/permission-mode.helper.spec.js +0 -54
  99. package/cjs/index.js +0 -28
  100. package/cjs/interfaces/action.interface.js +0 -4
  101. package/cjs/interfaces/iam-module-options.interface.js +0 -4
  102. package/cjs/interfaces/index.js +0 -20
  103. package/cjs/interfaces/role.interface.js +0 -7
  104. package/cjs/modules/iam.module.js +0 -186
  105. package/cjs/modules/iam.module.spec.js +0 -282
  106. package/cjs/modules/index.js +0 -18
  107. package/cjs/services/action.service.js +0 -337
  108. package/cjs/services/action.service.spec.js +0 -351
  109. package/cjs/services/iam-config.service.js +0 -87
  110. package/cjs/services/iam-config.service.spec.js +0 -110
  111. package/cjs/services/iam-datasource.service.js +0 -129
  112. package/cjs/services/iam-datasource.service.spec.js +0 -110
  113. package/cjs/services/index.js +0 -23
  114. package/cjs/services/permission-cache.service.js +0 -544
  115. package/cjs/services/permission-cache.service.spec.js +0 -718
  116. package/cjs/services/permission.service.js +0 -914
  117. package/cjs/services/permission.service.spec.js +0 -918
  118. package/cjs/services/role.service.js +0 -224
  119. package/cjs/services/role.service.spec.js +0 -347
  120. package/cjs/types/index.js +0 -18
  121. package/cjs/types/logic-node.type.js +0 -30
  122. package/fesm/config/event-actions.js +0 -15
  123. package/fesm/config/iam.constants.js +0 -1
  124. package/fesm/config/message-keys.js +0 -35
  125. package/fesm/controllers/action.controller.js +0 -164
  126. package/fesm/controllers/action.controller.spec.js +0 -75
  127. package/fesm/controllers/company-action-permission.controller.js +0 -109
  128. package/fesm/controllers/company-action-permission.controller.spec.js +0 -61
  129. package/fesm/controllers/my-permission.controller.js +0 -137
  130. package/fesm/controllers/my-permission.controller.spec.js +0 -124
  131. package/fesm/controllers/role-permission.controller.js +0 -181
  132. package/fesm/controllers/role-permission.controller.spec.js +0 -136
  133. package/fesm/controllers/role.controller.js +0 -92
  134. package/fesm/controllers/role.controller.spec.js +0 -82
  135. package/fesm/controllers/user-action-permission.controller.js +0 -119
  136. package/fesm/controllers/user-action-permission.controller.spec.js +0 -64
  137. package/fesm/docs/iam-swagger.config.js +0 -199
  138. package/fesm/docs/iam-swagger.config.spec.js +0 -95
  139. package/fesm/dtos/action.dto.js +0 -252
  140. package/fesm/dtos/permission.dto.js +0 -571
  141. package/fesm/dtos/role.dto.js +0 -134
  142. package/fesm/entities/action.entity.js +0 -128
  143. package/fesm/entities/index.spec.js +0 -52
  144. package/fesm/entities/permission-base.entity.js +0 -100
  145. package/fesm/entities/permission-with-company.entity.js +0 -90
  146. package/fesm/entities/role-base.entity.js +0 -70
  147. package/fesm/entities/role-with-company.entity.js +0 -45
  148. package/fesm/entities/role.entity.js +0 -15
  149. package/fesm/entities/user-iam-permission.entity.js +0 -33
  150. package/fesm/enums/action-type.enum.js +0 -12
  151. package/fesm/enums/iam-entity-type.enum.js +0 -7
  152. package/fesm/enums/iam-permission-type.enum.js +0 -7
  153. package/fesm/enums/permission-type.enum.js +0 -6
  154. package/fesm/helpers/company-access.helper.js +0 -18
  155. package/fesm/helpers/company-access.helper.spec.js +0 -64
  156. package/fesm/helpers/permission-mode.helper.js +0 -49
  157. package/fesm/helpers/permission-mode.helper.spec.js +0 -50
  158. package/fesm/interfaces/action.interface.js +0 -3
  159. package/fesm/interfaces/iam-module-options.interface.js +0 -3
  160. package/fesm/interfaces/role.interface.js +0 -4
  161. package/fesm/modules/iam.module.js +0 -176
  162. package/fesm/modules/iam.module.spec.js +0 -278
  163. package/fesm/services/action.service.js +0 -327
  164. package/fesm/services/action.service.spec.js +0 -347
  165. package/fesm/services/iam-config.service.js +0 -77
  166. package/fesm/services/iam-config.service.spec.js +0 -106
  167. package/fesm/services/iam-datasource.service.js +0 -78
  168. package/fesm/services/iam-datasource.service.spec.js +0 -106
  169. package/fesm/services/permission-cache.service.js +0 -527
  170. package/fesm/services/permission-cache.service.spec.js +0 -714
  171. package/fesm/services/permission.service.js +0 -904
  172. package/fesm/services/permission.service.spec.js +0 -914
  173. package/fesm/services/role.service.js +0 -214
  174. package/fesm/services/role.service.spec.js +0 -343
  175. 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);