@flusys/ng-iam 1.1.1-beta → 1.2.0-rc.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 (32) hide show
  1. package/README.md +44 -1027
  2. package/fesm2022/flusys-ng-iam-action-form-page.component-Vc5Toouu.mjs +502 -0
  3. package/fesm2022/flusys-ng-iam-action-form-page.component-Vc5Toouu.mjs.map +1 -0
  4. package/fesm2022/flusys-ng-iam-action-list-page.component-UGKclpFx.mjs +348 -0
  5. package/fesm2022/flusys-ng-iam-action-list-page.component-UGKclpFx.mjs.map +1 -0
  6. package/fesm2022/flusys-ng-iam-flusys-ng-iam-CrycDULz.mjs +4561 -0
  7. package/fesm2022/flusys-ng-iam-flusys-ng-iam-CrycDULz.mjs.map +1 -0
  8. package/fesm2022/flusys-ng-iam-iam-container.component-D0m8u6nu.mjs +105 -0
  9. package/fesm2022/flusys-ng-iam-iam-container.component-D0m8u6nu.mjs.map +1 -0
  10. package/fesm2022/flusys-ng-iam-permission-page.component-x88X4AgJ.mjs +143 -0
  11. package/fesm2022/flusys-ng-iam-permission-page.component-x88X4AgJ.mjs.map +1 -0
  12. package/fesm2022/flusys-ng-iam-role-form-page.component-InsxdriD.mjs +335 -0
  13. package/fesm2022/flusys-ng-iam-role-form-page.component-InsxdriD.mjs.map +1 -0
  14. package/fesm2022/flusys-ng-iam-role-list-page.component-8NGXCeSZ.mjs +389 -0
  15. package/fesm2022/flusys-ng-iam-role-list-page.component-8NGXCeSZ.mjs.map +1 -0
  16. package/fesm2022/flusys-ng-iam.mjs +1 -1
  17. package/package.json +11 -10
  18. package/types/flusys-ng-iam.d.ts +107 -686
  19. package/fesm2022/flusys-ng-iam-action-form-page.component-C1j10Qhw.mjs +0 -467
  20. package/fesm2022/flusys-ng-iam-action-form-page.component-C1j10Qhw.mjs.map +0 -1
  21. package/fesm2022/flusys-ng-iam-action-list-page.component-BCzSardO.mjs +0 -281
  22. package/fesm2022/flusys-ng-iam-action-list-page.component-BCzSardO.mjs.map +0 -1
  23. package/fesm2022/flusys-ng-iam-flusys-ng-iam-DISrddPh.mjs +0 -4940
  24. package/fesm2022/flusys-ng-iam-flusys-ng-iam-DISrddPh.mjs.map +0 -1
  25. package/fesm2022/flusys-ng-iam-iam-container.component-BkhqmzLi.mjs +0 -97
  26. package/fesm2022/flusys-ng-iam-iam-container.component-BkhqmzLi.mjs.map +0 -1
  27. package/fesm2022/flusys-ng-iam-permission-page.component-BSQFPt_N.mjs +0 -143
  28. package/fesm2022/flusys-ng-iam-permission-page.component-BSQFPt_N.mjs.map +0 -1
  29. package/fesm2022/flusys-ng-iam-role-form-page.component-Cqziu_BM.mjs +0 -314
  30. package/fesm2022/flusys-ng-iam-role-form-page.component-Cqziu_BM.mjs.map +0 -1
  31. package/fesm2022/flusys-ng-iam-role-list-page.component-BObCxHiB.mjs +0 -266
  32. package/fesm2022/flusys-ng-iam-role-list-page.component-BObCxHiB.mjs.map +0 -1
@@ -1,9 +1,10 @@
1
- import { IBaseEntity, ILogicNode, ApiResourceService, ISingleResponse, IProfilePermissionProvider, IProfileRoleInfo, IProfileActionInfo } from '@flusys/ng-shared';
1
+ import { IBaseEntity, ILogicNode, ApiResourceService, ISingleResponse, TranslateService, IProfilePermissionProvider, IProfileRoleInfo, IProfileActionInfo } from '@flusys/ng-shared';
2
2
  import * as _angular_core from '@angular/core';
3
- import { Signal, OnDestroy, Provider } from '@angular/core';
3
+ import { Provider } from '@angular/core';
4
4
  import { Observable } from 'rxjs';
5
5
  import { BaseApiService } from '@flusys/ng-core';
6
- import * as primeng_api from 'primeng/api';
6
+ export { PermissionMode } from '@flusys/ng-core';
7
+ import * as __________flusys_ng_ui_types_flusys_ng_ui from '../../@flusys/ng-ui/types/flusys-ng-ui';
7
8
  import { Routes } from '@angular/router';
8
9
 
9
10
  /**
@@ -35,10 +36,6 @@ interface IBranch {
35
36
  companyId: string;
36
37
  }
37
38
 
38
- /**
39
- * Role Response DTO
40
- * Matches backend RoleResponseDto
41
- */
42
39
  interface IRole extends IBaseEntity {
43
40
  readOnly: boolean;
44
41
  name: string;
@@ -46,49 +43,28 @@ interface IRole extends IBaseEntity {
46
43
  companyId: string | null;
47
44
  isActive: boolean;
48
45
  serial: number | null;
49
- metadata: Record<string, any> | null;
50
46
  }
51
- /**
52
- * Create Role DTO
53
- * Matches backend CreateRoleDto
54
- */
55
47
  interface ICreateRoleDto {
56
48
  name: string;
57
49
  description?: string;
58
50
  companyId?: string;
59
51
  isActive?: boolean;
60
52
  serial?: number;
61
- metadata?: Record<string, any>;
62
53
  }
63
- /**
64
- * Update Role DTO
65
- * Matches backend UpdateRoleDto
66
- */
67
54
  interface IUpdateRoleDto extends Partial<ICreateRoleDto> {
68
55
  id: string;
69
56
  }
70
- /**
71
- * Role Query DTO
72
- * Matches backend RoleQueryDto
73
- */
74
57
  interface IRoleQueryDto {
75
58
  companyId?: string;
76
59
  isActive?: boolean;
77
60
  }
78
61
 
79
- /**
80
- * Action Type - determines how action is used
81
- * CRITICAL: Must match backend ActionType enum exactly
82
- */
62
+ /** Must match backend ActionType enum */
83
63
  declare enum ActionType {
84
- BACKEND = "backend",// For API endpoint permissions (cached for PermissionGuard)
85
- FRONTEND = "frontend",// For frontend features (returned in my-permissions API)
64
+ BACKEND = "backend",
65
+ FRONTEND = "frontend",
86
66
  BOTH = "both"
87
67
  }
88
- /**
89
- * Action Response DTO
90
- * Matches backend ActionResponseDto
91
- */
92
68
  interface IAction extends IBaseEntity {
93
69
  readOnly: boolean;
94
70
  name: string;
@@ -99,19 +75,10 @@ interface IAction extends IBaseEntity {
99
75
  parentId: string | null;
100
76
  serial: number | null;
101
77
  isActive: boolean;
102
- metadata: Record<string, any> | null;
103
78
  }
104
- /**
105
- * Action Tree DTO
106
- * Hierarchical action structure
107
- */
108
79
  interface IActionTreeDto extends IAction {
109
80
  children: IActionTreeDto[];
110
81
  }
111
- /**
112
- * Create Action DTO
113
- * Matches backend CreateActionDto
114
- */
115
82
  interface ICreateActionDto {
116
83
  name: string;
117
84
  description?: string;
@@ -121,82 +88,36 @@ interface ICreateActionDto {
121
88
  parentId?: string;
122
89
  serial?: number;
123
90
  isActive?: boolean;
124
- metadata?: Record<string, any>;
125
91
  }
126
- /**
127
- * Update Action DTO
128
- * Matches backend UpdateActionDto
129
- */
130
92
  interface IUpdateActionDto extends Partial<ICreateActionDto> {
131
93
  id: string;
132
94
  }
133
95
 
134
- /**
135
- * Permission Action - 'add' or 'remove'
136
- */
137
96
  type PermissionAction = 'add' | 'remove';
138
- /**
139
- * Permission Mode - matches backend IAMPermissionMode
140
- */
141
- type PermissionMode = 'rbac' | 'direct' | 'full';
142
- /**
143
- * Permission Item DTO
144
- * Used in all assignment operations
145
- */
146
97
  interface IPermissionItemDto {
147
98
  id: string;
148
99
  action: PermissionAction;
149
100
  }
150
- /**
151
- * Assign User Actions DTO
152
- * Assign/remove actions directly to/from user (DIRECT/FULL mode)
153
- *
154
- * Permission Granularity:
155
- * - companyId + branchId = undefined: Global (super admin)
156
- * - companyId set + branchId = undefined: Company-wide (all branches)
157
- * - companyId set + branchId set: Branch-specific
158
- */
159
101
  interface IAssignUserActionsDto {
160
102
  userId: string;
161
103
  companyId?: string;
162
104
  branchId?: string;
163
105
  items: IPermissionItemDto[];
164
106
  }
165
- /**
166
- * Assign Company Actions DTO
167
- * Whitelist actions for company (if company feature enabled)
168
- */
169
107
  interface IAssignCompanyActionsDto {
170
108
  companyId: string;
171
109
  items: IPermissionItemDto[];
172
110
  }
173
- /**
174
- * Assign Role Actions DTO
175
- * Assign/remove actions to/from role (RBAC/FULL mode)
176
- */
177
111
  interface IAssignRoleActionsDto {
178
112
  roleId: string;
179
113
  items: IPermissionItemDto[];
180
114
  }
181
- /**
182
- * Assign User Roles DTO
183
- * Assign/remove roles to/from user (RBAC/FULL mode)
184
- *
185
- * Permission Granularity:
186
- * - companyId + branchId = undefined: Global (super admin)
187
- * - companyId set + branchId = undefined: Company-wide (all branches)
188
- * - companyId set + branchId set: Branch-specific
189
- */
190
115
  interface IAssignUserRolesDto {
191
116
  userId: string;
192
117
  companyId?: string;
193
118
  branchId?: string;
194
119
  items: IPermissionItemDto[];
195
120
  }
196
- /**
197
- * User Action Response DTO
198
- * Direct user → action permissions (branch-scoped if company feature enabled)
199
- */
200
121
  interface IUserActionResponseDto {
201
122
  id: string;
202
123
  userId: string;
@@ -206,10 +127,6 @@ interface IUserActionResponseDto {
206
127
  branchId: string | null;
207
128
  createdAt: Date;
208
129
  }
209
- /**
210
- * Role Action Response DTO
211
- * Role → action permissions (NOT branch-scoped)
212
- */
213
130
  interface IRoleActionResponseDto {
214
131
  id: string;
215
132
  roleId: string;
@@ -218,10 +135,6 @@ interface IRoleActionResponseDto {
218
135
  actionName: string;
219
136
  createdAt: Date;
220
137
  }
221
- /**
222
- * Company Action Response DTO
223
- * Company → action whitelist
224
- */
225
138
  interface ICompanyActionResponseDto {
226
139
  id: string;
227
140
  companyId: string;
@@ -230,37 +143,14 @@ interface ICompanyActionResponseDto {
230
143
  actionName: string;
231
144
  createdAt: Date;
232
145
  }
233
- /**
234
- * User Role Response DTO
235
- * User → role assignments (NOT branch-scoped)
236
- */
237
146
  interface IUserRoleResponseDto {
238
147
  id: string;
239
148
  userId: string;
240
149
  roleId: string;
241
- roleCode: string;
242
150
  roleName: string;
243
151
  branchId: string | null;
244
152
  createdAt: Date;
245
153
  }
246
- /**
247
- * Menu item from IAM permissions (menu-type actions)
248
- */
249
- interface IMenuAction {
250
- id: string;
251
- code: string;
252
- name: string;
253
- route: string | null;
254
- icon: string | null;
255
- iconType: number | null;
256
- serial: number | null;
257
- parentId: string | null;
258
- children?: IMenuAction[];
259
- }
260
- /**
261
- * My Permissions Response DTO
262
- * Complete user permissions (frontend actions, cached endpoints, menus)
263
- */
264
154
  interface IMyPermissionsResponseDto {
265
155
  frontendActions: Array<{
266
156
  id: string;
@@ -270,248 +160,83 @@ interface IMyPermissionsResponseDto {
270
160
  }>;
271
161
  cachedEndpoints: number;
272
162
  }
273
- /**
274
- * Prerequisite Action DTO
275
- * Action required as a prerequisite
276
- */
277
163
  interface IPrerequisiteActionDto {
278
164
  actionId: string;
279
165
  actionCode: string;
280
166
  actionName: string;
281
167
  }
282
- /**
283
- * Prerequisite Validation Error
284
- * Describes an action that failed prerequisite validation
285
- */
286
168
  interface IPrerequisiteValidationError {
287
169
  actionId: string;
288
170
  actionCode: string;
289
171
  actionName: string;
290
172
  requiredActions: IPrerequisiteActionDto[];
291
173
  }
292
- /**
293
- * Permission Operation Result DTO
294
- * Result of assignment operations
295
- */
296
174
  interface IPermissionOperationResultDto {
297
175
  success: boolean;
298
176
  added: number;
299
177
  removed: number;
300
178
  message: string;
179
+ messageKey?: string;
301
180
  prerequisiteErrors?: IPrerequisiteValidationError[];
302
181
  }
303
- /**
304
- * Get User Actions DTO
305
- * Optional branchId filter
306
- */
307
182
  interface IGetUserActionsDto {
308
183
  branchId?: string;
309
184
  }
310
- /**
311
- * Get Role Actions DTO
312
- * No parameters
313
- */
314
185
  interface IGetRoleActionsDto {
315
186
  }
316
- /**
317
- * Get User Roles DTO
318
- * Optional branchId filter (ignored - roles are NOT branch-scoped)
319
- */
320
187
  interface IGetUserRolesDto {
321
188
  branchId?: string;
322
189
  }
323
- /**
324
- * Get My Permissions DTO
325
- * Optional parentCodes filter for frontend actions
326
- */
327
190
  interface IGetMyPermissionsDto {
328
191
  parentCodes?: string[];
329
192
  }
330
193
 
331
- /**
332
- * Pagination Constants
333
- *
334
- * Standard pagination limits for IAM components.
335
- * Prevents excessive data loading and potential DoS.
336
- */
337
- /**
338
- * Maximum items to fetch for dropdown lists
339
- * Used for: companies, roles, users, branches
340
- *
341
- * Security: Prevents memory exhaustion from loading excessive records
342
- */
194
+ /** Maximum items for dropdown lists (companies, roles, users, branches) */
343
195
  declare const MAX_DROPDOWN_ITEMS = 100;
344
196
 
345
- /**
346
- * Role API Service
347
- * Handles role CRUD operations
348
- * Endpoint: POST /iam/roles/*
349
- * Conditional: Only available in RBAC/FULL mode
350
- */
197
+ declare const IAM_MESSAGES: Record<string, string>;
198
+
351
199
  declare class RoleApiService extends ApiResourceService<IUpdateRoleDto, IRole> {
352
200
  constructor();
353
201
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RoleApiService, never>;
354
202
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<RoleApiService>;
355
203
  }
356
204
 
357
- /**
358
- * Action API Service
359
- * Handles action CRUD operations
360
- * Endpoint: POST /iam/actions/*
361
- */
362
205
  declare class ActionApiService extends ApiResourceService<IUpdateActionDto, IAction> {
363
206
  private readonly appConfig;
364
207
  constructor();
365
- /**
366
- * Get actions for permission assignment
367
- * GET /iam/actions/tree-for-permission
368
- * Returns actions filtered by company whitelist if enabled
369
- */
208
+ /** Get actions filtered by company whitelist for permission assignment */
370
209
  getActionsForPermission(): Observable<ISingleResponse<IActionTreeDto[]>>;
371
- /**
372
- * Get actions in hierarchical tree structure
373
- * POST /iam/actions/tree
374
- * Returns all actions organized in parent-child tree
375
- *
376
- * @param search - Optional search term (name or code)
377
- * @param isActive - Optional filter by active status
378
- * @param withDeleted - Include deleted actions (default: false)
379
- * @returns Observable of action tree response
380
- */
210
+ /** Get actions in hierarchical tree structure */
381
211
  getTree(search?: string, isActive?: boolean, withDeleted?: boolean): Observable<ISingleResponse<IActionTreeDto[]>>;
382
212
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionApiService, never>;
383
213
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ActionApiService>;
384
214
  }
385
215
 
386
- /**
387
- * Action Permission Logic Service
388
- *
389
- * Shared service for handling smart dependency management across all action selectors:
390
- * - Company-Action Selector
391
- * - Role-Action Selector
392
- * - User-Action Selector
393
- *
394
- * **Core Features:**
395
- * - Smart auto-selection (AND/OR optimization)
396
- * - Dependency detection and management
397
- * - Alternative suggestion for OR logic
398
- * - Visual formatting of permission logic trees
399
- * - Prerequisite validation
400
- *
401
- * @example
402
- * constructor() {
403
- * this.permissionLogic = inject(ActionPermissionLogicService);
404
- * }
405
- *
406
- * onActionToggle(action: IAction, newValue: boolean) {
407
- * if (!newValue) {
408
- * this.permissionLogic.handleUncheck(
409
- * action,
410
- * this.selectionMap(),
411
- * this.actions(),
412
- * (newMap) => this.selectionMap.set(newMap)
413
- * );
414
- * } else {
415
- * this.permissionLogic.handleCheck(
416
- * action,
417
- * this.selectionMap(),
418
- * this.actions(),
419
- * (newMap) => this.selectionMap.set(newMap),
420
- * (previousState) => this.selectionMap.set(previousState)
421
- * );
422
- * }
423
- * }
424
- */
216
+ /** Shared service for smart dependency management across action selectors */
425
217
  declare class ActionPermissionLogicService {
426
218
  private readonly confirmationService;
427
219
  private readonly messageService;
428
- /**
429
- * Handle checking an action with prerequisite validation
430
- *
431
- * Uses recursive deep scan to find ALL missing prerequisites at all levels,
432
- * not just direct dependencies. This ensures cascading dependencies are
433
- * resolved in a single step.
434
- *
435
- * @param action - Action being checked
436
- * @param currentSelection - Current selection map
437
- * @param allActions - All available actions
438
- * @param onUpdate - Callback to update selection
439
- * @param onCancel - Callback when user cancels
440
- */
220
+ private readonly translateAdapter;
221
+ private t;
222
+ /** Handle checking an action with prerequisite validation (recursive deep scan) */
441
223
  handleCheck(action: IAction, currentSelection: Record<string, boolean>, allActions: IAction[], onUpdate: (newSelection: Record<string, boolean>) => void, onCancel: (previousState: Record<string, boolean>) => void): void;
442
- /**
443
- * Handle unchecking an action with dependency detection
444
- *
445
- * @param action - Action being unchecked
446
- * @param currentSelection - Current selection map
447
- * @param allActions - All available actions
448
- * @param onUpdate - Callback to update selection
449
- */
224
+ /** Handle unchecking an action with dependency detection */
450
225
  handleUncheck(action: IAction, currentSelection: Record<string, boolean>, allActions: IAction[], onUpdate: (newSelection: Record<string, boolean>) => void): void;
451
- /**
452
- * Check if an action has unmet prerequisites
453
- *
454
- * @param action - Action to check
455
- * @param currentSelection - Current selection map
456
- * @param allActions - All available actions
457
- * @returns True if action has unmet prerequisites
458
- */
226
+ /** Check if an action has unmet prerequisites */
459
227
  hasUnmetPrerequisites(action: IAction, currentSelection: Record<string, boolean>, allActions: IAction[]): boolean;
460
- /**
461
- * Get all selected actions that have unmet prerequisites
462
- *
463
- * @param currentSelection - Current selection map
464
- * @param allActions - All available actions
465
- * @returns Array of actions with unmet prerequisites
466
- */
228
+ /** Get all selected actions that have unmet prerequisites */
467
229
  getActionsWithUnmetPrerequisites(currentSelection: Record<string, boolean>, allActions: IAction[]): IAction[];
468
- /**
469
- * Show validation error dialog with auto-fix options
470
- *
471
- * @param invalidActions - Actions with unmet prerequisites
472
- * @param currentSelection - Current selection map
473
- * @param allActions - All available actions
474
- * @param onUpdate - Callback to update selection
475
- */
230
+ /** Show validation error dialog with auto-fix options */
476
231
  showValidationErrorDialog(invalidActions: IAction[], currentSelection: Record<string, boolean>, allActions: IAction[], onUpdate: (newSelection: Record<string, boolean>) => void): void;
477
- /**
478
- * Get prerequisite description for tooltip display
479
- *
480
- * @param action - Action to get prerequisites for
481
- * @param currentSelection - Current selection map
482
- * @param allActions - All available actions
483
- * @returns Plain text prerequisite description
484
- */
232
+ /** Get prerequisite description for tooltip display */
485
233
  getPrerequisiteTooltip(action: IAction, currentSelection: Record<string, boolean>, allActions: IAction[]): string;
486
- /**
487
- * Build dynamic logic tree message with AND/OR operators and nesting
488
- *
489
- * @param logic - Permission logic tree
490
- * @param missingActions - Actions that are missing
491
- * @param allActions - All available actions
492
- * @param currentSelection - Current selection map for accurate status
493
- * @returns HTML formatted logic tree
494
- */
495
- buildLogicMessage(logic: ILogicNode, missingActions: IAction[], allActions: IAction[], currentSelection?: Record<string, boolean>): string;
234
+ /** Build dynamic logic tree message with AND/OR operators and nesting */
235
+ buildLogicMessage(logic: ILogicNode, _missingActions: IAction[], allActions: IAction[], currentSelection?: Record<string, boolean>): string;
236
+ /** Extract selected action IDs from selection map */
237
+ private getSelectedIds;
496
238
  private sanitizeHtml;
497
- /**
498
- * Recursively collect ALL missing prerequisites at all dependency levels
499
- *
500
- * This prevents cascading prerequisite dialogs by finding the complete
501
- * dependency chain upfront.
502
- *
503
- * **Example:**
504
- * - Action 4 requires Action 3
505
- * - Action 3 requires Action 2
506
- * - Action 2 requires Action 1
507
- *
508
- * Instead of showing 3 separate dialogs, this returns: [Action 3, Action 2, Action 1]
509
- *
510
- * @param action - Starting action to check
511
- * @param currentSelection - Current selection map
512
- * @param allActions - All available actions
513
- * @returns Complete set of missing prerequisites across all levels
514
- */
239
+ /** Recursively collect ALL missing prerequisites at all dependency levels */
515
240
  private getAllMissingPrerequisitesRecursive;
516
241
  private showPrerequisiteDialog;
517
242
  private showDependencyDialog;
@@ -523,66 +248,21 @@ declare class ActionPermissionLogicService {
523
248
  private findRequiredActionIds;
524
249
  private buildSimpleMessage;
525
250
  private formatLogicNode;
526
- /**
527
- * Build clean text-based logic tree for tooltips
528
- */
251
+ /** Build clean text-based logic tree for tooltips */
529
252
  private buildTooltipLogicTree;
530
253
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionPermissionLogicService, never>;
531
254
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ActionPermissionLogicService>;
532
255
  }
533
256
 
534
- /**
535
- * Consolidated Permission API Service
536
- * Handles all permission-related operations in one service
537
- * Supports:
538
- * - User → Action (direct permissions)
539
- * - User → Role (role assignments)
540
- * - Role → Action (role permissions)
541
- * - Company → Action (company whitelisting)
542
- *
543
- * Endpoint: POST /permissions/*
544
- */
545
257
  declare class PermissionApiService extends BaseApiService {
546
258
  constructor();
547
- /**
548
- * Assign/remove actions directly to/from user
549
- * POST /permissions/user-actions/assign
550
- */
551
259
  assignUserActions(data: IAssignUserActionsDto): Observable<ISingleResponse<IPermissionOperationResultDto>>;
552
- /**
553
- * Get user's direct action permissions
554
- * GET /permissions/user-actions/:userId
555
- */
556
260
  getUserActions(userId: string, query?: IGetUserActionsDto): Observable<ISingleResponse<IUserActionResponseDto[]>>;
557
- /**
558
- * Assign/remove roles to/from user
559
- * POST /permissions/user-roles/assign
560
- */
561
261
  assignUserRoles(data: IAssignUserRolesDto): Observable<ISingleResponse<IPermissionOperationResultDto>>;
562
- /**
563
- * Get user's role assignments
564
- * GET /permissions/user-roles/:userId
565
- */
566
262
  getUserRoles(userId: string, query?: IGetUserRolesDto): Observable<ISingleResponse<IUserRoleResponseDto[]>>;
567
- /**
568
- * Assign/remove actions to/from role
569
- * POST /permissions/role-actions/assign
570
- */
571
263
  assignRoleActions(data: IAssignRoleActionsDto): Observable<ISingleResponse<IPermissionOperationResultDto>>;
572
- /**
573
- * Get role's action permissions
574
- * GET /permissions/role-actions/:roleId
575
- */
576
- getRoleActions(roleId: string, query?: IGetRoleActionsDto): Observable<ISingleResponse<IRoleActionResponseDto[]>>;
577
- /**
578
- * Assign/remove actions to/from company (whitelisting)
579
- * POST /permissions/company-actions/assign
580
- */
264
+ getRoleActions(roleId: string): Observable<ISingleResponse<IRoleActionResponseDto[]>>;
581
265
  assignCompanyActions(data: IAssignCompanyActionsDto): Observable<ISingleResponse<IPermissionOperationResultDto>>;
582
- /**
583
- * Get company's whitelisted actions
584
- * GET /permissions/company-actions/:companyId
585
- */
586
266
  getCompanyActions(companyId: string): Observable<ISingleResponse<ICompanyActionResponseDto[]>>;
587
267
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionApiService, never>;
588
268
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PermissionApiService>;
@@ -598,7 +278,6 @@ declare class MyPermissionsApiService {
598
278
  private readonly http;
599
279
  private readonly appConfig;
600
280
  private readonly baseUrl;
601
- constructor();
602
281
  /**
603
282
  * Get current user's complete permissions
604
283
  * POST /iam/permissions/my-permissions
@@ -610,45 +289,14 @@ declare class MyPermissionsApiService {
610
289
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<MyPermissionsApiService>;
611
290
  }
612
291
 
613
- /**
614
- * Permission State Service
615
- * Manages user permissions state and provides permission checking methods
616
- *
617
- * Uses shared PermissionValidatorService for centralized permission checking.
618
- *
619
- * @example
620
- * ```typescript
621
- * // In component
622
- * readonly permissionState = inject(PermissionStateService);
623
- *
624
- * ngOnInit() {
625
- * this.permissionState.loadPermissions();
626
- * }
627
- *
628
- * // Check permission
629
- * if (this.permissionState.hasAction('user.create')) {
630
- * // Show create button
631
- * }
632
- * ```
633
- */
634
292
  declare class PermissionStateService {
635
293
  private readonly permissionApi;
636
294
  private readonly permissionValidator;
637
295
  private readonly _permissions;
638
- readonly permissions: Signal<IMyPermissionsResponseDto | null>;
296
+ readonly permissions: _angular_core.Signal<IMyPermissionsResponseDto | null>;
639
297
  private readonly _isLoading;
640
- readonly isLoading: Signal<boolean>;
641
- /**
642
- * Load current user's permissions from API
643
- * Call this on app initialization or after login
644
- * Returns Observable for reactive composition
645
- */
298
+ readonly isLoading: _angular_core.Signal<boolean>;
646
299
  loadPermissions(dto?: IGetMyPermissionsDto): Observable<void>;
647
- /**
648
- * Check if permissions are loaded
649
- *
650
- * @returns true if permissions are loaded
651
- */
652
300
  isLoaded(): boolean;
653
301
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PermissionStateService, never>;
654
302
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PermissionStateService>;
@@ -670,78 +318,40 @@ declare class LogicBuilderComponent {
670
318
  name: string;
671
319
  }[]>;
672
320
  readonly logicChange: _angular_core.OutputEmitterRef<ILogicNode | null>;
673
- readonly availableActions: _angular_core.Signal<{
674
- id: string;
675
- name: string;
676
- }[]>;
677
- private builderTree;
321
+ /** Internal builder tree state (private writable + public readonly pattern) */
322
+ private readonly _builderTree;
678
323
  readonly builderLogic: _angular_core.Signal<IBuilderNode | null>;
324
+ constructor();
679
325
  initializeLogic(): void;
680
326
  clearLogic(): void;
681
327
  toggleOperator(nodeId: string): void;
682
328
  addChildNode(parentId: string, type: 'group' | 'action'): void;
683
329
  removeNode(nodeId: string): void;
684
330
  updateActionId(nodeId: string, actionId: string): void;
685
- private emitChange;
331
+ /** Updates a node in the tree and emits the change */
332
+ private updateNode;
333
+ /** Sets the tree and emits the change */
334
+ private updateTreeAndEmit;
686
335
  private updateNodeInTree;
687
336
  private removeNodeFromTree;
688
337
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LogicBuilderComponent, never>;
689
338
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LogicBuilderComponent, "lib-logic-builder", never, { "logic": { "alias": "logic"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; }, { "logicChange": "logicChange"; }, never, never, true, never>;
690
339
  }
691
340
 
692
- /**
693
- * Role-Action Selector Component
694
- *
695
- * Manages role action permissions with hierarchical tree view and intelligent dependency management.
696
- *
697
- * **Architecture:**
698
- * - Presentation: TreeTable for hierarchical display
699
- * - Business Logic: Flat action list for selection/validation
700
- * - State: Signals with computed dependencies
701
- *
702
- * **Core Features:**
703
- * - Role dropdown with async loading
704
- * - Hierarchical TreeTable with expand/collapse
705
- * - Action permission assignment (add/remove)
706
- * - Real-time change tracking
707
- *
708
- * **Dependency Management:**
709
- * - Auto-selection with AND/OR logic
710
- * - Dependency detection on uncheck
711
- * - Cascade remove for AND dependencies
712
- * - Visual warnings for unmet prerequisites
713
- * - Pre-save validation with auto-fix
714
- *
715
- * **Performance:**
716
- * - OnPush change detection
717
- * - Computed signals for reactive updates
718
- * - Memoized prerequisite validation
719
- * - AbortController for request cancellation
720
- *
721
- * @example
722
- * ```html
723
- * <flusys-role-action-selector />
724
- * ```
725
- */
726
- declare class RoleActionSelectorComponent implements OnDestroy {
727
- private readonly roleApi;
728
- private readonly actionApi;
729
- private readonly permissionApi;
730
- private readonly messageService;
731
- private readonly permissionLogic;
732
- readonly selectedRoleId: _angular_core.WritableSignal<string | undefined>;
733
- readonly roles: _angular_core.WritableSignal<IRole[]>;
341
+ declare abstract class BaseActionSelectorComponent {
342
+ protected readonly permissionLogic: ActionPermissionLogicService;
343
+ protected readonly translateAdapter: TranslateService | null;
734
344
  readonly loading: _angular_core.WritableSignal<boolean>;
735
345
  readonly saving: _angular_core.WritableSignal<boolean>;
736
- private readonly _actions;
346
+ protected readonly _actions: _angular_core.WritableSignal<IAction[]>;
737
347
  readonly actions: _angular_core.Signal<IAction[]>;
738
- private readonly _actionsTree;
739
- private readonly actionsTree;
740
- private readonly _selectionMap;
348
+ protected readonly _actionsTree: _angular_core.WritableSignal<IActionTreeDto[]>;
349
+ protected readonly actionsTree: _angular_core.Signal<IActionTreeDto[]>;
350
+ protected readonly _selectionMap: _angular_core.WritableSignal<Record<string, boolean>>;
741
351
  readonly selectionMap: _angular_core.Signal<Record<string, boolean>>;
742
- private readonly _initialSelection;
743
- private readonly initialSelection;
744
- readonly treeNodes: _angular_core.Signal<primeng_api.TreeNode<IAction>[]>;
352
+ protected readonly _initialSelection: _angular_core.WritableSignal<Record<string, boolean>>;
353
+ protected readonly initialSelection: _angular_core.Signal<Record<string, boolean>>;
354
+ readonly treeNodes: _angular_core.Signal<__________flusys_ng_ui_types_flusys_ng_ui.TreeNode<IAction>[]>;
745
355
  readonly allSelected: _angular_core.Signal<boolean>;
746
356
  readonly hasChanges: _angular_core.Signal<boolean>;
747
357
  readonly actionsWithUnmetPrerequisites: _angular_core.Signal<Set<string>>;
@@ -749,162 +359,65 @@ declare class RoleActionSelectorComponent implements OnDestroy {
749
359
  readonly pendingAdd: _angular_core.Signal<IAction[]>;
750
360
  readonly pendingRemove: _angular_core.Signal<IAction[]>;
751
361
  readonly canSave: _angular_core.Signal<boolean>;
752
- private loadDataAbortController;
753
- constructor();
754
- ngOnDestroy(): void;
755
- /**
756
- * Load roles from API
757
- */
758
- private loadRoles;
759
- /**
760
- * Load actions and assignments for selected role
761
- */
762
- private onRoleChange;
763
- /**
764
- * Get tooltip for action checkbox
765
- */
766
- getTooltip(action: IAction): string;
767
- /**
768
- * Check if action has unmet prerequisites
769
- */
362
+ protected translate(key: string, vars?: Record<string, string | number>): string;
770
363
  hasUnmetPrerequisites(action: IAction): boolean;
771
- /**
772
- * Handle action toggle with dependency management
773
- */
364
+ getTooltip(action: IAction): string;
365
+ protected abstract getDefaultTooltip(isSelected: boolean): string;
774
366
  onActionToggle(action: IAction, newValue: boolean): void;
775
- /**
776
- * Toggle all actions
777
- */
778
367
  toggleAll(): void;
779
- /**
780
- * Select all actions
781
- */
782
368
  selectAll(): void;
783
- /**
784
- * Deselect all actions
785
- */
786
369
  deselectAll(): void;
787
- /**
788
- * Save changes to backend
789
- */
370
+ protected setAllSelection(value: boolean): void;
371
+ protected buildSelectionMap(actions: IAction[], predicate: (action: IAction) => boolean): Record<string, boolean>;
372
+ protected buildPayloadItems(): Array<{
373
+ id: string;
374
+ action: PermissionAction;
375
+ }>;
376
+ protected resetState(): void;
377
+ }
378
+
379
+ declare class RoleActionSelectorComponent extends BaseActionSelectorComponent {
380
+ readonly ROLE_ACTION_PERMISSIONS: {
381
+ readonly READ: "role-action.read";
382
+ readonly ASSIGN: "role-action.assign";
383
+ };
384
+ private readonly destroyRef;
385
+ private readonly roleApi;
386
+ private readonly actionApi;
387
+ private readonly permissionApi;
388
+ private readonly messageService;
389
+ readonly selectedRoleId: _angular_core.WritableSignal<string | undefined>;
390
+ readonly roles: _angular_core.WritableSignal<IRole[]>;
391
+ private loadDataAbortController;
392
+ constructor();
393
+ protected getDefaultTooltip(isSelected: boolean): string;
394
+ private loadRoles;
395
+ private onRoleChange;
790
396
  saveChanges(): Promise<void>;
791
- /**
792
- * Reset component state
793
- */
794
- private resetState;
795
397
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RoleActionSelectorComponent, never>;
796
398
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RoleActionSelectorComponent, "flusys-role-action-selector", never, {}, {}, never, never, true, never>;
797
399
  }
798
400
 
799
- /**
800
- * Company-Action Selector Component
801
- *
802
- * Manages company action whitelisting with hierarchical tree view and intelligent dependency management.
803
- *
804
- * **Architecture:**
805
- * - Presentation: TreeTable for hierarchical display
806
- * - Business Logic: Flat action list for selection/validation
807
- * - State: Signals with computed dependencies
808
- *
809
- * **Core Features:**
810
- * - Company dropdown with async loading
811
- * - Hierarchical TreeTable with expand/collapse
812
- * - Action whitelist management (add/remove)
813
- * - Real-time change tracking
814
- *
815
- * **Dependency Management:**
816
- * - Auto-selection with AND/OR logic
817
- * - Dependency detection on uncheck
818
- * - Cascade remove for AND dependencies
819
- * - Visual warnings for unmet prerequisites
820
- * - Pre-save validation with auto-fix
821
- *
822
- * **Performance:**
823
- * - OnPush change detection
824
- * - Computed signals for reactive updates
825
- * - Memoized prerequisite validation
826
- * - AbortController for request cancellation
827
- *
828
- * @example
829
- * ```html
830
- * <flusys-company-action-selector />
831
- * ```
832
- */
833
- declare class CompanyActionSelectorComponent implements OnDestroy {
401
+ declare class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
402
+ readonly COMPANY_ACTION_PERMISSIONS: {
403
+ readonly READ: "company-action.read";
404
+ readonly ASSIGN: "company-action.assign";
405
+ };
834
406
  private readonly companyApiProvider;
835
407
  private readonly actionApi;
836
408
  private readonly permissionApi;
837
409
  private readonly messageService;
838
410
  private readonly confirmationService;
839
- private readonly permissionLogic;
411
+ private readonly destroyRef;
840
412
  readonly selectedCompanyId: _angular_core.WritableSignal<string | undefined>;
841
413
  readonly companies: _angular_core.WritableSignal<ICompany[]>;
842
- readonly loading: _angular_core.WritableSignal<boolean>;
843
- readonly saving: _angular_core.WritableSignal<boolean>;
844
- private readonly _actions;
845
- readonly actions: _angular_core.Signal<IAction[]>;
846
- private readonly _actionsTree;
847
- private readonly actionsTree;
848
- private readonly _selectionMap;
849
- readonly selectionMap: _angular_core.Signal<Record<string, boolean>>;
850
- private readonly _initialSelection;
851
- private readonly initialSelection;
852
- readonly treeNodes: _angular_core.Signal<primeng_api.TreeNode<IAction>[]>;
853
- readonly allSelected: _angular_core.Signal<boolean>;
854
- readonly hasChanges: _angular_core.Signal<boolean>;
855
- readonly actionsWithUnmetPrerequisites: _angular_core.Signal<Set<string>>;
856
- readonly invalidActionsCount: _angular_core.Signal<number>;
857
- readonly pendingAdd: _angular_core.Signal<IAction[]>;
858
- readonly pendingRemove: _angular_core.Signal<IAction[]>;
859
- readonly canSave: _angular_core.Signal<boolean>;
860
414
  private loadDataAbortController;
861
415
  constructor();
862
- ngOnDestroy(): void;
863
- /**
864
- * Load companies from API
865
- */
416
+ protected getDefaultTooltip(isSelected: boolean): string;
866
417
  private loadCompanies;
867
- /**
868
- * Load actions and assignments for selected company
869
- */
870
418
  private loadData;
871
- /**
872
- * Check if action has unmet prerequisites
873
- */
874
- hasUnmetPrerequisites(action: IAction): boolean;
875
- /**
876
- * Get tooltip for action checkbox
877
- */
878
- getTooltip(action: IAction): string;
879
- /**
880
- * Handle action checkbox toggle
881
- */
882
- onActionToggle(action: IAction, newValue: boolean): void;
883
- /**
884
- * Toggle all actions
885
- */
886
- toggleAll(): void;
887
- /**
888
- * Select all actions
889
- */
890
- selectAll(): void;
891
- /**
892
- * Deselect all actions
893
- */
894
- deselectAll(): void;
895
- /**
896
- * Save changes to backend
897
- */
898
419
  saveChanges(): Promise<void>;
899
- /**
900
- * Handle backend prerequisite validation errors
901
- * Shows confirmation dialog with auto-fix option
902
- */
903
420
  private handleBackendPrerequisiteErrors;
904
- /**
905
- * Reset component state
906
- */
907
- private resetState;
908
421
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CompanyActionSelectorComponent, never>;
909
422
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CompanyActionSelectorComponent, "flusys-company-action-selector", never, {}, {}, never, never, true, never>;
910
423
  }
@@ -930,7 +443,6 @@ declare class CompanyActionSelectorComponent implements OnDestroy {
930
443
  * - Branch-specific: branchId = selected value
931
444
  *
932
445
  * **Performance:**
933
- * - OnPush change detection
934
446
  * - Computed signals for reactive updates
935
447
  * - Branch filtering on company context change
936
448
  *
@@ -940,12 +452,18 @@ declare class CompanyActionSelectorComponent implements OnDestroy {
940
452
  * ```
941
453
  */
942
454
  declare class UserRoleSelectorComponent {
455
+ readonly USER_ROLE_PERMISSIONS: {
456
+ readonly READ: "user-role.read";
457
+ readonly ASSIGN: "user-role.assign";
458
+ };
943
459
  private readonly appConfig;
944
460
  private readonly companyContext;
945
461
  private readonly userPermissionProvider;
946
462
  private readonly roleApi;
947
463
  private readonly permissionApi;
948
464
  private readonly messageService;
465
+ private readonly translateAdapter;
466
+ private translate;
949
467
  readonly selectedUserId: _angular_core.WritableSignal<string | null>;
950
468
  readonly selectedBranchId: _angular_core.WritableSignal<string | undefined>;
951
469
  readonly branches: _angular_core.WritableSignal<IBranch[]>;
@@ -993,6 +511,10 @@ declare class UserRoleSelectorComponent {
993
511
  * Deselect all roles
994
512
  */
995
513
  deselectAll(): void;
514
+ /**
515
+ * Set all role selections to a given value
516
+ */
517
+ private setAllSelections;
996
518
  /**
997
519
  * Save changes to backend
998
520
  */
@@ -1005,109 +527,28 @@ declare class UserRoleSelectorComponent {
1005
527
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserRoleSelectorComponent, "flusys-user-role-selector", never, {}, {}, never, never, true, never>;
1006
528
  }
1007
529
 
1008
- /**
1009
- * User-Action Selector Component
1010
- *
1011
- * Manages direct user action permissions with hierarchical tree view.
1012
- *
1013
- * **Architecture:**
1014
- * - Presentation: TreeTable for hierarchical display
1015
- * - Business Logic: Flat action list for selection/validation
1016
- * - State: Signals with computed dependencies
1017
- *
1018
- * **Core Features:**
1019
- * - User dropdown with async loading
1020
- * - Branch selector (if company feature enabled)
1021
- * - Hierarchical TreeTable with expand/collapse
1022
- * - Direct user-action permission assignment (bypassing roles)
1023
- * - Real-time change tracking
1024
- *
1025
- * **Granularity:**
1026
- * - Company-wide: branchId = undefined
1027
- * - Branch-specific: branchId = selected value
1028
- *
1029
- * **Performance:**
1030
- * - OnPush change detection
1031
- * - Computed signals for reactive updates
1032
- * - Branch filtering on company context change
1033
- *
1034
- * @example
1035
- * ```html
1036
- * <flusys-user-action-selector />
1037
- * ```
1038
- */
1039
- declare class UserActionSelectorComponent {
530
+ declare class UserActionSelectorComponent extends BaseActionSelectorComponent {
531
+ readonly USER_ACTION_PERMISSIONS: {
532
+ readonly READ: "user-action.read";
533
+ readonly ASSIGN: "user-action.assign";
534
+ };
1040
535
  private readonly appConfig;
1041
536
  private readonly companyContext;
1042
537
  private readonly userPermissionProvider;
1043
538
  private readonly actionApi;
1044
539
  private readonly permissionApi;
1045
- private readonly permissionLogic;
1046
540
  private readonly messageService;
1047
541
  readonly selectedUserId: _angular_core.WritableSignal<string | null>;
1048
542
  readonly selectedBranchId: _angular_core.WritableSignal<string | undefined>;
1049
543
  readonly branches: _angular_core.WritableSignal<IBranch[]>;
1050
- readonly loading: _angular_core.WritableSignal<boolean>;
1051
- readonly saving: _angular_core.WritableSignal<boolean>;
1052
- private readonly _actions;
1053
- readonly actions: _angular_core.Signal<IAction[]>;
1054
- private readonly _actionsTree;
1055
- private readonly actionsTree;
1056
- private readonly _selectionMap;
1057
- readonly selectionMap: _angular_core.Signal<Record<string, boolean>>;
1058
- private readonly _initialSelection;
1059
- private readonly initialSelection;
544
+ private readonly isCompanyFeatureActive;
1060
545
  readonly showBranchSelector: _angular_core.Signal<boolean>;
1061
546
  readonly filteredBranches: _angular_core.Signal<IBranch[]>;
1062
- readonly treeNodes: _angular_core.Signal<primeng_api.TreeNode<IAction>[]>;
1063
- readonly allSelected: _angular_core.Signal<boolean>;
1064
- readonly hasChanges: _angular_core.Signal<boolean>;
1065
- readonly actionsWithUnmetPrerequisites: _angular_core.Signal<Set<string>>;
1066
- readonly invalidActionsCount: _angular_core.Signal<number>;
1067
- readonly pendingAdd: _angular_core.Signal<IAction[]>;
1068
- readonly pendingRemove: _angular_core.Signal<IAction[]>;
1069
- readonly canSave: _angular_core.Signal<boolean>;
1070
547
  constructor();
1071
- /**
1072
- * Load user's permitted branches
1073
- */
548
+ protected getDefaultTooltip(isSelected: boolean): string;
1074
549
  private loadUserBranches;
1075
- /**
1076
- * Load actions and assignments for selected user
1077
- */
1078
550
  private loadData;
1079
- /**
1080
- * Get tooltip for action checkbox
1081
- */
1082
- getTooltip(action: IAction): string;
1083
- /**
1084
- * Check if action has unmet prerequisites
1085
- */
1086
- hasUnmetPrerequisites(action: IAction): boolean;
1087
- /**
1088
- * Handle action checkbox toggle
1089
- */
1090
- onActionToggle(action: IAction, newValue: boolean): void;
1091
- /**
1092
- * Toggle all actions
1093
- */
1094
- toggleAll(): void;
1095
- /**
1096
- * Select all actions
1097
- */
1098
- selectAll(): void;
1099
- /**
1100
- * Deselect all actions
1101
- */
1102
- deselectAll(): void;
1103
- /**
1104
- * Save changes to backend
1105
- */
1106
551
  saveChanges(): Promise<void>;
1107
- /**
1108
- * Reset component state
1109
- */
1110
- private resetState;
1111
552
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserActionSelectorComponent, never>;
1112
553
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserActionSelectorComponent, "flusys-user-action-selector", never, {}, {}, never, never, true, never>;
1113
554
  }
@@ -1136,38 +577,18 @@ declare class ProfilePermissionProviderAdapter implements IProfilePermissionProv
1136
577
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ProfilePermissionProviderAdapter>;
1137
578
  }
1138
579
 
1139
- /**
1140
- * Provide IAM Provider Adapters
1141
- *
1142
- * Registers IAM implementations for provider interfaces from ng-shared.
1143
- * This allows ng-auth profile page to display permissions without direct dependencies.
1144
- *
1145
- * @example
1146
- * // In app.config.ts
1147
- * import { provideIamProviders } from '@flusys/ng-iam';
1148
- *
1149
- * export const appConfig: ApplicationConfig = {
1150
- * providers: [
1151
- * ...provideIamProviders(),
1152
- * // ... other providers
1153
- * ]
1154
- * };
1155
- *
1156
- * @returns Array of Angular providers
1157
- */
580
+ /** Registers IAM provider adapters for ng-shared interfaces */
1158
581
  declare function provideIamProviders(): Provider[];
1159
582
 
1160
583
  /**
1161
584
  * IAM Routes Configuration
1162
585
  *
1163
- * Identity and Access Management routing
1164
- * - Actions: Permission actions (always visible)
586
+ * Identity and Access Management routing with permission guards.
587
+ * - Actions: Permission actions management
1165
588
  * - Roles: Role management (conditional on RBAC/FULL mode)
1166
- * - Permissions: User permission assignments (always visible)
1167
- *
1168
- * All routes are protected by permission guards to prevent direct URL access.
589
+ * - Permissions: User permission assignments
1169
590
  */
1170
591
  declare const IAM_ROUTES: Routes;
1171
592
 
1172
- export { ActionApiService, ActionPermissionLogicService, ActionType, CompanyActionSelectorComponent, IAM_ROUTES, LogicBuilderComponent, MAX_DROPDOWN_ITEMS, MyPermissionsApiService, PermissionApiService, PermissionStateService, ProfilePermissionProviderAdapter, RoleActionSelectorComponent, RoleApiService, UserActionSelectorComponent, UserRoleSelectorComponent, provideIamProviders };
1173
- export type { IAction, IActionTreeDto, IAssignCompanyActionsDto, IAssignRoleActionsDto, IAssignUserActionsDto, IAssignUserRolesDto, IBranch, ICompany, ICompanyActionResponseDto, ICreateActionDto, ICreateRoleDto, IGetMyPermissionsDto, IGetRoleActionsDto, IGetUserActionsDto, IGetUserRolesDto, IMenuAction, IMyPermissionsResponseDto, IPermissionItemDto, IPermissionOperationResultDto, IPrerequisiteActionDto, IPrerequisiteValidationError, IRole, IRoleActionResponseDto, IRoleQueryDto, IUpdateActionDto, IUpdateRoleDto, IUser, IUserActionResponseDto, IUserRoleResponseDto, PermissionAction, PermissionMode };
593
+ export { ActionApiService, ActionPermissionLogicService, ActionType, CompanyActionSelectorComponent, IAM_MESSAGES, IAM_ROUTES, LogicBuilderComponent, MAX_DROPDOWN_ITEMS, MyPermissionsApiService, PermissionApiService, PermissionStateService, ProfilePermissionProviderAdapter, RoleActionSelectorComponent, RoleApiService, UserActionSelectorComponent, UserRoleSelectorComponent, provideIamProviders };
594
+ export type { IAction, IActionTreeDto, IAssignCompanyActionsDto, IAssignRoleActionsDto, IAssignUserActionsDto, IAssignUserRolesDto, IBranch, ICompany, ICompanyActionResponseDto, ICreateActionDto, ICreateRoleDto, IGetMyPermissionsDto, IGetRoleActionsDto, IGetUserActionsDto, IGetUserRolesDto, IMyPermissionsResponseDto, IPermissionItemDto, IPermissionOperationResultDto, IPrerequisiteActionDto, IPrerequisiteValidationError, IRole, IRoleActionResponseDto, IRoleQueryDto, IUpdateActionDto, IUpdateRoleDto, IUser, IUserActionResponseDto, IUserRoleResponseDto, PermissionAction };