@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,119 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "CompanyActionPermissionController", {
6
- enumerable: true,
7
- get: function() {
8
- return CompanyActionPermissionController;
9
- }
10
- });
11
- const _nestjsshared = require("@flusys/nestjs-shared");
12
- const _common = require("@nestjs/common");
13
- const _swagger = require("@nestjs/swagger");
14
- const _config = require("../config");
15
- const _permissiondto = require("../dtos/permission.dto");
16
- const _permissionservice = require("../services/permission.service");
17
- function _define_property(obj, key, value) {
18
- if (key in obj) {
19
- Object.defineProperty(obj, key, {
20
- value: value,
21
- enumerable: true,
22
- configurable: true,
23
- writable: true
24
- });
25
- } else {
26
- obj[key] = value;
27
- }
28
- return obj;
29
- }
30
- function _ts_decorate(decorators, target, key, desc) {
31
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33
- 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;
34
- return c > 3 && r && Object.defineProperty(target, key, r), r;
35
- }
36
- function _ts_metadata(k, v) {
37
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
38
- }
39
- function _ts_param(paramIndex, decorator) {
40
- return function(target, key) {
41
- decorator(target, key, paramIndex);
42
- };
43
- }
44
- let CompanyActionPermissionController = class CompanyActionPermissionController {
45
- async assignCompanyActions(dto) {
46
- const result = await this.permissionService.assignCompanyActions(dto);
47
- return {
48
- success: true,
49
- message: 'Company actions updated successfully',
50
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.PROCESS_SUCCESS,
51
- messageVariables: {
52
- added: result.added,
53
- removed: result.removed,
54
- total: result.total
55
- },
56
- data: result
57
- };
58
- }
59
- async getCompanyActions(dto) {
60
- const actions = await this.permissionService.getCompanyActions(dto.companyId, false);
61
- return {
62
- success: true,
63
- message: 'Company actions retrieved successfully',
64
- messageKey: _config.COMPANY_ACTION_PERMISSION_MESSAGES.GET_SUCCESS,
65
- data: actions
66
- };
67
- }
68
- constructor(permissionService){
69
- _define_property(this, "permissionService", void 0);
70
- this.permissionService = permissionService;
71
- }
72
- };
73
- _ts_decorate([
74
- (0, _common.Post)('company-actions/assign'),
75
- (0, _nestjsshared.RequirePermission)(_nestjsshared.COMPANY_ACTION_PERMISSIONS.ASSIGN),
76
- (0, _swagger.ApiOperation)({
77
- summary: 'Whitelist actions for company',
78
- description: 'Controls which actions are available to company users/roles.'
79
- }),
80
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.PermissionOperationResultDto),
81
- (0, _swagger.ApiBody)({
82
- type: _permissiondto.AssignCompanyActionsDto
83
- }),
84
- _ts_param(0, (0, _common.Body)()),
85
- _ts_metadata("design:type", Function),
86
- _ts_metadata("design:paramtypes", [
87
- typeof _permissiondto.AssignCompanyActionsDto === "undefined" ? Object : _permissiondto.AssignCompanyActionsDto
88
- ]),
89
- _ts_metadata("design:returntype", Promise)
90
- ], CompanyActionPermissionController.prototype, "assignCompanyActions", null);
91
- _ts_decorate([
92
- (0, _common.Post)('get-company-actions'),
93
- (0, _nestjsshared.RequirePermission)(_nestjsshared.COMPANY_ACTION_PERMISSIONS.READ),
94
- (0, _swagger.ApiOperation)({
95
- summary: 'Get company whitelisted actions',
96
- description: 'Returns actions available to company.'
97
- }),
98
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.CompanyActionResponseDto, true, 'single'),
99
- (0, _swagger.ApiBody)({
100
- type: _permissiondto.GetCompanyActionsDto
101
- }),
102
- _ts_param(0, (0, _common.Body)()),
103
- _ts_metadata("design:type", Function),
104
- _ts_metadata("design:paramtypes", [
105
- typeof _permissiondto.GetCompanyActionsDto === "undefined" ? Object : _permissiondto.GetCompanyActionsDto
106
- ]),
107
- _ts_metadata("design:returntype", Promise)
108
- ], CompanyActionPermissionController.prototype, "getCompanyActions", null);
109
- CompanyActionPermissionController = _ts_decorate([
110
- (0, _swagger.ApiTags)('IAM - Company Action Permissions'),
111
- (0, _common.Controller)('iam/permissions'),
112
- (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard, _nestjsshared.PermissionGuard),
113
- (0, _swagger.ApiBearerAuth)(),
114
- _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
115
- _ts_metadata("design:type", Function),
116
- _ts_metadata("design:paramtypes", [
117
- typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
118
- ])
119
- ], CompanyActionPermissionController);
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _companyactionpermissioncontroller = require("./company-action-permission.controller");
6
- describe('CompanyActionPermissionController', ()=>{
7
- let controller;
8
- let mockPermissionService;
9
- beforeEach(()=>{
10
- mockPermissionService = {
11
- assignCompanyActions: jest.fn(),
12
- getCompanyActions: jest.fn()
13
- };
14
- controller = new _companyactionpermissioncontroller.CompanyActionPermissionController(mockPermissionService);
15
- });
16
- describe('assignCompanyActions', ()=>{
17
- it('whitelists actions for a company', async ()=>{
18
- mockPermissionService.assignCompanyActions.mockResolvedValue({
19
- added: 3,
20
- removed: 0,
21
- total: 3
22
- });
23
- const result = await controller.assignCompanyActions({
24
- companyId: 'company-1',
25
- actionIds: [
26
- 'action-1',
27
- 'action-2',
28
- 'action-3'
29
- ]
30
- });
31
- expect(mockPermissionService.assignCompanyActions).toHaveBeenCalledWith({
32
- companyId: 'company-1',
33
- actionIds: [
34
- 'action-1',
35
- 'action-2',
36
- 'action-3'
37
- ]
38
- });
39
- expect(result.success).toBe(true);
40
- expect(result.data).toEqual({
41
- added: 3,
42
- removed: 0,
43
- total: 3
44
- });
45
- });
46
- });
47
- describe('getCompanyActions', ()=>{
48
- it('returns the whitelisted actions for a company', async ()=>{
49
- mockPermissionService.getCompanyActions.mockResolvedValue([
50
- {
51
- actionId: 'action-1'
52
- }
53
- ]);
54
- const result = await controller.getCompanyActions({
55
- companyId: 'company-1'
56
- });
57
- expect(mockPermissionService.getCompanyActions).toHaveBeenCalledWith('company-1', false);
58
- expect(result.data).toEqual([
59
- {
60
- actionId: 'action-1'
61
- }
62
- ]);
63
- });
64
- });
65
- });
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./action.controller"), exports);
6
- _export_star(require("./role.controller"), exports);
7
- _export_star(require("./company-action-permission.controller"), exports);
8
- _export_star(require("./my-permission.controller"), exports);
9
- _export_star(require("./role-permission.controller"), exports);
10
- _export_star(require("./user-action-permission.controller"), exports);
11
- function _export_star(from, to) {
12
- Object.keys(from).forEach(function(k) {
13
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
14
- Object.defineProperty(to, k, {
15
- enumerable: true,
16
- get: function() {
17
- return from[k];
18
- }
19
- });
20
- }
21
- });
22
- return from;
23
- }
@@ -1,147 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "MyPermissionController", {
6
- enumerable: true,
7
- get: function() {
8
- return MyPermissionController;
9
- }
10
- });
11
- const _nestjsshared = require("@flusys/nestjs-shared");
12
- const _config = require("../config");
13
- const _common = require("@nestjs/common");
14
- const _swagger = require("@nestjs/swagger");
15
- const _permissiondto = require("../dtos/permission.dto");
16
- const _permissionservice = require("../services/permission.service");
17
- function _define_property(obj, key, value) {
18
- if (key in obj) {
19
- Object.defineProperty(obj, key, {
20
- value: value,
21
- enumerable: true,
22
- configurable: true,
23
- writable: true
24
- });
25
- } else {
26
- obj[key] = value;
27
- }
28
- return obj;
29
- }
30
- function _ts_decorate(decorators, target, key, desc) {
31
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33
- 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;
34
- return c > 3 && r && Object.defineProperty(target, key, r), r;
35
- }
36
- function _ts_metadata(k, v) {
37
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
38
- }
39
- function _ts_param(paramIndex, decorator) {
40
- return function(target, key) {
41
- decorator(target, key, paramIndex);
42
- };
43
- }
44
- let MyPermissionController = class MyPermissionController {
45
- async getMyPermissions(query, user) {
46
- const data = await this.permissionService.getMyPermissions(user.id, user.branchId ?? null, user.companyId ?? null, query.parentCodes);
47
- return {
48
- success: true,
49
- message: 'Permissions loaded successfully',
50
- messageKey: _config.MY_PERMISSION_MESSAGES.GET_SUCCESS,
51
- data
52
- };
53
- }
54
- async getMyRoles(user) {
55
- const data = await this.permissionService.getUserEffectiveRoles(user.id, user.companyId ?? null, user.branchId ?? null);
56
- return {
57
- success: true,
58
- message: 'Roles loaded successfully',
59
- messageKey: _config.MY_PERMISSION_MESSAGES.MY_ROLES_SUCCESS,
60
- data
61
- };
62
- }
63
- async getMyActions(user) {
64
- const data = await this.permissionService.getUserEffectiveActions(user.id, user.companyId ?? null, user.branchId ?? null);
65
- return {
66
- success: true,
67
- message: 'Actions loaded successfully',
68
- messageKey: _config.MY_PERMISSION_MESSAGES.MY_ACTIONS_SUCCESS,
69
- data
70
- };
71
- }
72
- // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
73
- constructor(permissionService){
74
- _define_property(this, "permissionService", void 0);
75
- this.permissionService = permissionService;
76
- }
77
- };
78
- _ts_decorate([
79
- (0, _common.Post)('my-permissions'),
80
- (0, _swagger.ApiOperation)({
81
- summary: 'Get current user permissions',
82
- description: 'Returns complete permissions for authenticated user. Includes menus, frontend actions, and caches endpoint permissions. Optionally filter by parent codes.'
83
- }),
84
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.MyPermissionsResponseDto),
85
- (0, _swagger.ApiResponse)({
86
- status: 401,
87
- description: 'Unauthorized'
88
- }),
89
- (0, _swagger.ApiBody)({
90
- type: _permissiondto.MyPermissionsQueryDto
91
- }),
92
- _ts_param(0, (0, _common.Body)()),
93
- _ts_param(1, (0, _nestjsshared.CurrentUser)()),
94
- _ts_metadata("design:type", Function),
95
- _ts_metadata("design:paramtypes", [
96
- typeof _permissiondto.MyPermissionsQueryDto === "undefined" ? Object : _permissiondto.MyPermissionsQueryDto,
97
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
98
- ]),
99
- _ts_metadata("design:returntype", Promise)
100
- ], MyPermissionController.prototype, "getMyPermissions", null);
101
- _ts_decorate([
102
- (0, _common.Post)('my-roles'),
103
- (0, _swagger.ApiOperation)({
104
- summary: 'Get current user roles',
105
- description: 'Returns effective roles for the authenticated user, merging company-wide (branch-independent) and login-branch-specific role assignments.'
106
- }),
107
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.UserRoleResponseDto, true, 'single'),
108
- (0, _swagger.ApiResponse)({
109
- status: 401,
110
- description: 'Unauthorized'
111
- }),
112
- _ts_param(0, (0, _nestjsshared.CurrentUser)()),
113
- _ts_metadata("design:type", Function),
114
- _ts_metadata("design:paramtypes", [
115
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
116
- ]),
117
- _ts_metadata("design:returntype", Promise)
118
- ], MyPermissionController.prototype, "getMyRoles", null);
119
- _ts_decorate([
120
- (0, _common.Post)('my-actions'),
121
- (0, _swagger.ApiOperation)({
122
- summary: 'Get current user direct actions',
123
- description: 'Returns effective direct action assignments for the authenticated user, merging company-wide (branch-independent) and login-branch-specific assignments.'
124
- }),
125
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.UserActionResponseDto, true, 'single'),
126
- (0, _swagger.ApiResponse)({
127
- status: 401,
128
- description: 'Unauthorized'
129
- }),
130
- _ts_param(0, (0, _nestjsshared.CurrentUser)()),
131
- _ts_metadata("design:type", Function),
132
- _ts_metadata("design:paramtypes", [
133
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
134
- ]),
135
- _ts_metadata("design:returntype", Promise)
136
- ], MyPermissionController.prototype, "getMyActions", null);
137
- MyPermissionController = _ts_decorate([
138
- (0, _swagger.ApiTags)('IAM - My Permissions'),
139
- (0, _common.Controller)('iam/permissions'),
140
- (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
141
- (0, _swagger.ApiBearerAuth)(),
142
- _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
143
- _ts_metadata("design:type", Function),
144
- _ts_metadata("design:paramtypes", [
145
- typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
146
- ])
147
- ], MyPermissionController);
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
6
- const _mypermissioncontroller = require("./my-permission.controller");
7
- describe('MyPermissionController', ()=>{
8
- let controller;
9
- let mockPermissionService;
10
- beforeEach(()=>{
11
- mockPermissionService = {
12
- getMyPermissions: jest.fn(),
13
- getUserEffectiveRoles: jest.fn(),
14
- getUserEffectiveActions: jest.fn()
15
- };
16
- controller = new _mypermissioncontroller.MyPermissionController(mockPermissionService);
17
- });
18
- describe('getMyPermissions', ()=>{
19
- it('resolves permissions for the current user, branch, and company', async ()=>{
20
- const user = (0, _loggedusermock.buildMockUser)({
21
- id: 'user-1',
22
- companyId: 'company-1',
23
- branchId: 'branch-1'
24
- });
25
- const permissions = {
26
- menus: [],
27
- actions: [
28
- 'user.create'
29
- ]
30
- };
31
- mockPermissionService.getMyPermissions.mockResolvedValue(permissions);
32
- const result = await controller.getMyPermissions({
33
- parentCodes: [
34
- 'user'
35
- ]
36
- }, user);
37
- expect(mockPermissionService.getMyPermissions).toHaveBeenCalledWith('user-1', 'branch-1', 'company-1', [
38
- 'user'
39
- ]);
40
- expect(result).toEqual({
41
- success: true,
42
- message: 'Permissions loaded successfully',
43
- messageKey: expect.any(String),
44
- data: permissions
45
- });
46
- });
47
- it('passes null for missing branch and company context', async ()=>{
48
- const user = (0, _loggedusermock.buildMockUser)({
49
- id: 'user-1',
50
- companyId: undefined,
51
- branchId: undefined
52
- });
53
- mockPermissionService.getMyPermissions.mockResolvedValue({});
54
- await controller.getMyPermissions({}, user);
55
- expect(mockPermissionService.getMyPermissions).toHaveBeenCalledWith('user-1', null, null, undefined);
56
- });
57
- });
58
- describe('getMyRoles', ()=>{
59
- it('resolves effective roles for the current user, company, and branch', async ()=>{
60
- const user = (0, _loggedusermock.buildMockUser)({
61
- id: 'user-1',
62
- companyId: 'company-1',
63
- branchId: 'branch-1'
64
- });
65
- const roles = [
66
- {
67
- id: 'perm-1',
68
- roleId: 'role-1',
69
- roleName: 'Manager'
70
- }
71
- ];
72
- mockPermissionService.getUserEffectiveRoles.mockResolvedValue(roles);
73
- const result = await controller.getMyRoles(user);
74
- expect(mockPermissionService.getUserEffectiveRoles).toHaveBeenCalledWith('user-1', 'company-1', 'branch-1');
75
- expect(result).toEqual({
76
- success: true,
77
- message: 'Roles loaded successfully',
78
- messageKey: expect.any(String),
79
- data: roles
80
- });
81
- });
82
- it('passes null for missing company and branch context', async ()=>{
83
- const user = (0, _loggedusermock.buildMockUser)({
84
- id: 'user-1',
85
- companyId: undefined,
86
- branchId: undefined
87
- });
88
- mockPermissionService.getUserEffectiveRoles.mockResolvedValue([]);
89
- await controller.getMyRoles(user);
90
- expect(mockPermissionService.getUserEffectiveRoles).toHaveBeenCalledWith('user-1', null, null);
91
- });
92
- });
93
- describe('getMyActions', ()=>{
94
- it('resolves effective actions for the current user, company, and branch', async ()=>{
95
- const user = (0, _loggedusermock.buildMockUser)({
96
- id: 'user-1',
97
- companyId: 'company-1',
98
- branchId: 'branch-1'
99
- });
100
- const actions = [
101
- {
102
- id: 'perm-1',
103
- actionId: 'action-1',
104
- actionCode: 'user.view'
105
- }
106
- ];
107
- mockPermissionService.getUserEffectiveActions.mockResolvedValue(actions);
108
- const result = await controller.getMyActions(user);
109
- expect(mockPermissionService.getUserEffectiveActions).toHaveBeenCalledWith('user-1', 'company-1', 'branch-1');
110
- expect(result).toEqual({
111
- success: true,
112
- message: 'Actions loaded successfully',
113
- messageKey: expect.any(String),
114
- data: actions
115
- });
116
- });
117
- it('passes null for missing company and branch context', async ()=>{
118
- const user = (0, _loggedusermock.buildMockUser)({
119
- id: 'user-1',
120
- companyId: undefined,
121
- branchId: undefined
122
- });
123
- mockPermissionService.getUserEffectiveActions.mockResolvedValue([]);
124
- await controller.getMyActions(user);
125
- expect(mockPermissionService.getUserEffectiveActions).toHaveBeenCalledWith('user-1', null, null);
126
- });
127
- });
128
- });
@@ -1,191 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "RolePermissionController", {
6
- enumerable: true,
7
- get: function() {
8
- return RolePermissionController;
9
- }
10
- });
11
- const _nestjsshared = require("@flusys/nestjs-shared");
12
- const _common = require("@nestjs/common");
13
- const _swagger = require("@nestjs/swagger");
14
- const _config = require("../config");
15
- const _permissiondto = require("../dtos/permission.dto");
16
- const _helpers = require("../helpers");
17
- const _iamconfigservice = require("../services/iam-config.service");
18
- const _permissionservice = require("../services/permission.service");
19
- function _define_property(obj, key, value) {
20
- if (key in obj) {
21
- Object.defineProperty(obj, key, {
22
- value: value,
23
- enumerable: true,
24
- configurable: true,
25
- writable: true
26
- });
27
- } else {
28
- obj[key] = value;
29
- }
30
- return obj;
31
- }
32
- function _ts_decorate(decorators, target, key, desc) {
33
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
35
- 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;
36
- return c > 3 && r && Object.defineProperty(target, key, r), r;
37
- }
38
- function _ts_metadata(k, v) {
39
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
40
- }
41
- function _ts_param(paramIndex, decorator) {
42
- return function(target, key) {
43
- decorator(target, key, paramIndex);
44
- };
45
- }
46
- let RolePermissionController = class RolePermissionController {
47
- async assignRoleActions(dto) {
48
- const result = await this.permissionService.assignRoleActions(dto);
49
- return {
50
- success: true,
51
- message: 'Role actions updated successfully',
52
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.PROCESS_SUCCESS,
53
- messageVariables: {
54
- added: result.added,
55
- removed: result.removed,
56
- total: result.total
57
- },
58
- data: result
59
- };
60
- }
61
- async getRoleActions(dto) {
62
- const actions = await this.permissionService.getRoleActions(dto.roleId);
63
- return {
64
- success: true,
65
- message: 'Role actions retrieved successfully',
66
- messageKey: _config.ROLE_PERMISSION_MESSAGES.ACTIONS_SUCCESS,
67
- data: actions
68
- };
69
- }
70
- async assignUserRoles(dto, user) {
71
- (0, _helpers.validateCompanyAccess)(this.config, dto.companyId, user);
72
- const result = await this.permissionService.assignUserRoles(dto);
73
- return {
74
- success: true,
75
- message: 'User roles updated successfully',
76
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.PROCESS_SUCCESS,
77
- messageVariables: {
78
- added: result.added,
79
- removed: result.removed,
80
- total: result.total
81
- },
82
- data: result
83
- };
84
- }
85
- async getUserRoles(dto, user) {
86
- (0, _helpers.validateCompanyAccess)(this.config, dto.companyId, user);
87
- const roles = await this.permissionService.getUserRoles(dto.userId, dto.branchId, dto.companyId);
88
- return {
89
- success: true,
90
- message: 'User roles retrieved successfully',
91
- messageKey: _config.ROLE_PERMISSION_MESSAGES.USER_ROLES_SUCCESS,
92
- data: roles
93
- };
94
- }
95
- // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
96
- constructor(permissionService, config){
97
- _define_property(this, "permissionService", void 0);
98
- _define_property(this, "config", void 0);
99
- this.permissionService = permissionService;
100
- this.config = config;
101
- }
102
- };
103
- _ts_decorate([
104
- (0, _common.Post)('role-actions/assign'),
105
- (0, _nestjsshared.RequirePermission)(_nestjsshared.ROLE_ACTION_PERMISSIONS.ASSIGN),
106
- (0, _swagger.ApiOperation)({
107
- summary: 'Assign/remove actions to/from role',
108
- description: 'RBAC mode. No branch scoping.'
109
- }),
110
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.PermissionOperationResultDto),
111
- (0, _swagger.ApiBody)({
112
- type: _permissiondto.AssignRoleActionsDto
113
- }),
114
- _ts_param(0, (0, _common.Body)()),
115
- _ts_metadata("design:type", Function),
116
- _ts_metadata("design:paramtypes", [
117
- typeof _permissiondto.AssignRoleActionsDto === "undefined" ? Object : _permissiondto.AssignRoleActionsDto
118
- ]),
119
- _ts_metadata("design:returntype", Promise)
120
- ], RolePermissionController.prototype, "assignRoleActions", null);
121
- _ts_decorate([
122
- (0, _common.Post)('get-role-actions'),
123
- (0, _nestjsshared.RequirePermission)(_nestjsshared.ROLE_ACTION_PERMISSIONS.READ),
124
- (0, _swagger.ApiOperation)({
125
- summary: 'Get role actions',
126
- description: 'Returns actions assigned to role.'
127
- }),
128
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.RoleActionResponseDto, true, 'single'),
129
- (0, _swagger.ApiBody)({
130
- type: _permissiondto.GetRoleActionsDto
131
- }),
132
- _ts_param(0, (0, _common.Body)()),
133
- _ts_metadata("design:type", Function),
134
- _ts_metadata("design:paramtypes", [
135
- typeof _permissiondto.GetRoleActionsDto === "undefined" ? Object : _permissiondto.GetRoleActionsDto
136
- ]),
137
- _ts_metadata("design:returntype", Promise)
138
- ], RolePermissionController.prototype, "getRoleActions", null);
139
- _ts_decorate([
140
- (0, _common.Post)('user-roles/assign'),
141
- (0, _nestjsshared.RequirePermission)(_nestjsshared.USER_ROLE_PERMISSIONS.ASSIGN),
142
- (0, _swagger.ApiOperation)({
143
- summary: 'Assign/remove roles to/from user',
144
- description: 'RBAC mode. If company feature enabled, branchId is required.'
145
- }),
146
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.PermissionOperationResultDto),
147
- (0, _swagger.ApiBody)({
148
- type: _permissiondto.AssignUserRolesDto
149
- }),
150
- _ts_param(0, (0, _common.Body)()),
151
- _ts_param(1, (0, _nestjsshared.CurrentUser)()),
152
- _ts_metadata("design:type", Function),
153
- _ts_metadata("design:paramtypes", [
154
- typeof _permissiondto.AssignUserRolesDto === "undefined" ? Object : _permissiondto.AssignUserRolesDto,
155
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
156
- ]),
157
- _ts_metadata("design:returntype", Promise)
158
- ], RolePermissionController.prototype, "assignUserRoles", null);
159
- _ts_decorate([
160
- (0, _common.Post)('get-user-roles'),
161
- (0, _nestjsshared.RequirePermission)(_nestjsshared.USER_ROLE_PERMISSIONS.READ),
162
- (0, _swagger.ApiOperation)({
163
- summary: 'Get user roles',
164
- description: 'Returns roles assigned to user. Filter by companyId and branchId.'
165
- }),
166
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.UserRoleResponseDto, true, 'single'),
167
- (0, _swagger.ApiBody)({
168
- type: _permissiondto.GetUserRolesDto
169
- }),
170
- _ts_param(0, (0, _common.Body)()),
171
- _ts_param(1, (0, _nestjsshared.CurrentUser)()),
172
- _ts_metadata("design:type", Function),
173
- _ts_metadata("design:paramtypes", [
174
- typeof _permissiondto.GetUserRolesDto === "undefined" ? Object : _permissiondto.GetUserRolesDto,
175
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
176
- ]),
177
- _ts_metadata("design:returntype", Promise)
178
- ], RolePermissionController.prototype, "getUserRoles", null);
179
- RolePermissionController = _ts_decorate([
180
- (0, _swagger.ApiTags)('IAM - Role Permissions'),
181
- (0, _common.Controller)('iam/permissions'),
182
- (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard, _nestjsshared.PermissionGuard),
183
- (0, _swagger.ApiBearerAuth)(),
184
- _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
185
- _ts_param(1, (0, _common.Inject)(_iamconfigservice.IAMConfigService)),
186
- _ts_metadata("design:type", Function),
187
- _ts_metadata("design:paramtypes", [
188
- typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService,
189
- typeof _iamconfigservice.IAMConfigService === "undefined" ? Object : _iamconfigservice.IAMConfigService
190
- ])
191
- ], RolePermissionController);