@flusys/nestjs-iam 7.0.2 → 8.0.0-beta.1

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