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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/config/index.d.ts +3 -3
  2. package/controllers/action.controller.d.ts +4 -4
  3. package/controllers/company-action-permission.controller.d.ts +2 -2
  4. package/controllers/index.d.ts +6 -6
  5. package/controllers/my-permission.controller.d.ts +3 -3
  6. package/controllers/role-permission.controller.d.ts +4 -4
  7. package/controllers/role.controller.d.ts +2 -2
  8. package/controllers/user-action-permission.controller.d.ts +4 -4
  9. package/docs/iam-swagger.config.d.ts +2 -2
  10. package/docs/index.d.ts +1 -1
  11. package/dtos/action.dto.d.ts +2 -2
  12. package/dtos/index.d.ts +3 -3
  13. package/entities/action.entity.d.ts +2 -2
  14. package/entities/index.d.ts +11 -11
  15. package/entities/permission-with-company.entity.d.ts +1 -1
  16. package/entities/role-with-company.entity.d.ts +1 -1
  17. package/entities/role.entity.d.ts +1 -1
  18. package/entities/user-iam-permission.entity.d.ts +1 -1
  19. package/enums/index.d.ts +4 -4
  20. package/fesm/284.js +1262 -0
  21. package/fesm/867.js +3699 -0
  22. package/fesm/chunks/364.js +86 -0
  23. package/fesm/config/index.js +133 -3
  24. package/fesm/controllers/index.js +18 -7
  25. package/fesm/docs/index.js +240 -1
  26. package/fesm/dtos/index.js +1090 -3
  27. package/fesm/entities/index.js +670 -31
  28. package/fesm/enums/index.js +97 -4
  29. package/fesm/helpers/index.js +125 -2
  30. package/fesm/index.js +806 -11
  31. package/fesm/interfaces/index.js +17 -3
  32. package/fesm/modules/index.js +259 -1
  33. package/fesm/runtime.js +134 -0
  34. package/fesm/services/index.js +43 -6
  35. package/fesm/types/index.js +15 -1
  36. package/helpers/company-access.helper.d.ts +2 -2
  37. package/helpers/index.d.ts +2 -2
  38. package/helpers/permission-mode.helper.d.ts +1 -1
  39. package/index.d.ts +11 -11
  40. package/interfaces/action.interface.d.ts +2 -2
  41. package/interfaces/iam-module-options.interface.d.ts +3 -3
  42. package/interfaces/index.d.ts +3 -3
  43. package/modules/iam.module.d.ts +2 -2
  44. package/modules/index.d.ts +1 -1
  45. package/package.json +30 -37
  46. package/services/action.service.d.ts +9 -9
  47. package/services/iam-config.service.d.ts +4 -4
  48. package/services/iam-datasource.service.d.ts +3 -3
  49. package/services/index.d.ts +6 -6
  50. package/services/permission-cache.service.d.ts +5 -5
  51. package/services/permission.service.d.ts +4 -4
  52. package/services/role.service.d.ts +8 -8
  53. package/types/index.d.ts +1 -1
  54. package/cjs/config/event-actions.js +0 -36
  55. package/cjs/config/iam.constants.js +0 -11
  56. package/cjs/config/index.js +0 -20
  57. package/cjs/config/message-keys.js +0 -71
  58. package/cjs/controllers/action.controller.js +0 -174
  59. package/cjs/controllers/action.controller.spec.js +0 -79
  60. package/cjs/controllers/company-action-permission.controller.js +0 -119
  61. package/cjs/controllers/company-action-permission.controller.spec.js +0 -65
  62. package/cjs/controllers/index.js +0 -23
  63. package/cjs/controllers/my-permission.controller.js +0 -147
  64. package/cjs/controllers/my-permission.controller.spec.js +0 -128
  65. package/cjs/controllers/role-permission.controller.js +0 -191
  66. package/cjs/controllers/role-permission.controller.spec.js +0 -140
  67. package/cjs/controllers/role.controller.js +0 -102
  68. package/cjs/controllers/role.controller.spec.js +0 -86
  69. package/cjs/controllers/user-action-permission.controller.js +0 -129
  70. package/cjs/controllers/user-action-permission.controller.spec.js +0 -68
  71. package/cjs/docs/iam-swagger.config.js +0 -209
  72. package/cjs/docs/iam-swagger.config.spec.js +0 -99
  73. package/cjs/docs/index.js +0 -18
  74. package/cjs/dtos/action.dto.js +0 -282
  75. package/cjs/dtos/index.js +0 -21
  76. package/cjs/dtos/permission.dto.js +0 -637
  77. package/cjs/dtos/role.dto.js +0 -155
  78. package/cjs/entities/action.entity.js +0 -138
  79. package/cjs/entities/index.js +0 -80
  80. package/cjs/entities/index.spec.js +0 -56
  81. package/cjs/entities/permission-base.entity.js +0 -107
  82. package/cjs/entities/permission-with-company.entity.js +0 -100
  83. package/cjs/entities/role-base.entity.js +0 -80
  84. package/cjs/entities/role-with-company.entity.js +0 -55
  85. package/cjs/entities/role.entity.js +0 -25
  86. package/cjs/entities/user-iam-permission.entity.js +0 -43
  87. package/cjs/enums/action-type.enum.js +0 -22
  88. package/cjs/enums/iam-entity-type.enum.js +0 -17
  89. package/cjs/enums/iam-permission-type.enum.js +0 -17
  90. package/cjs/enums/index.js +0 -21
  91. package/cjs/enums/permission-type.enum.js +0 -16
  92. package/cjs/helpers/company-access.helper.js +0 -23
  93. package/cjs/helpers/company-access.helper.spec.js +0 -68
  94. package/cjs/helpers/index.js +0 -19
  95. package/cjs/helpers/permission-mode.helper.js +0 -49
  96. package/cjs/helpers/permission-mode.helper.spec.js +0 -54
  97. package/cjs/index.js +0 -28
  98. package/cjs/interfaces/action.interface.js +0 -4
  99. package/cjs/interfaces/iam-module-options.interface.js +0 -4
  100. package/cjs/interfaces/index.js +0 -20
  101. package/cjs/interfaces/role.interface.js +0 -7
  102. package/cjs/modules/iam.module.js +0 -186
  103. package/cjs/modules/iam.module.spec.js +0 -282
  104. package/cjs/modules/index.js +0 -18
  105. package/cjs/services/action.service.js +0 -337
  106. package/cjs/services/action.service.spec.js +0 -351
  107. package/cjs/services/iam-config.service.js +0 -87
  108. package/cjs/services/iam-config.service.spec.js +0 -110
  109. package/cjs/services/iam-datasource.service.js +0 -129
  110. package/cjs/services/iam-datasource.service.spec.js +0 -110
  111. package/cjs/services/index.js +0 -23
  112. package/cjs/services/permission-cache.service.js +0 -544
  113. package/cjs/services/permission-cache.service.spec.js +0 -718
  114. package/cjs/services/permission.service.js +0 -914
  115. package/cjs/services/permission.service.spec.js +0 -918
  116. package/cjs/services/role.service.js +0 -224
  117. package/cjs/services/role.service.spec.js +0 -347
  118. package/cjs/types/index.js +0 -18
  119. package/cjs/types/logic-node.type.js +0 -30
  120. package/fesm/config/event-actions.js +0 -15
  121. package/fesm/config/iam.constants.js +0 -1
  122. package/fesm/config/message-keys.js +0 -35
  123. package/fesm/controllers/action.controller.js +0 -164
  124. package/fesm/controllers/action.controller.spec.js +0 -75
  125. package/fesm/controllers/company-action-permission.controller.js +0 -109
  126. package/fesm/controllers/company-action-permission.controller.spec.js +0 -61
  127. package/fesm/controllers/my-permission.controller.js +0 -137
  128. package/fesm/controllers/my-permission.controller.spec.js +0 -124
  129. package/fesm/controllers/role-permission.controller.js +0 -181
  130. package/fesm/controllers/role-permission.controller.spec.js +0 -136
  131. package/fesm/controllers/role.controller.js +0 -92
  132. package/fesm/controllers/role.controller.spec.js +0 -82
  133. package/fesm/controllers/user-action-permission.controller.js +0 -119
  134. package/fesm/controllers/user-action-permission.controller.spec.js +0 -64
  135. package/fesm/docs/iam-swagger.config.js +0 -199
  136. package/fesm/docs/iam-swagger.config.spec.js +0 -95
  137. package/fesm/dtos/action.dto.js +0 -252
  138. package/fesm/dtos/permission.dto.js +0 -571
  139. package/fesm/dtos/role.dto.js +0 -134
  140. package/fesm/entities/action.entity.js +0 -128
  141. package/fesm/entities/index.spec.js +0 -52
  142. package/fesm/entities/permission-base.entity.js +0 -100
  143. package/fesm/entities/permission-with-company.entity.js +0 -90
  144. package/fesm/entities/role-base.entity.js +0 -70
  145. package/fesm/entities/role-with-company.entity.js +0 -45
  146. package/fesm/entities/role.entity.js +0 -15
  147. package/fesm/entities/user-iam-permission.entity.js +0 -33
  148. package/fesm/enums/action-type.enum.js +0 -12
  149. package/fesm/enums/iam-entity-type.enum.js +0 -7
  150. package/fesm/enums/iam-permission-type.enum.js +0 -7
  151. package/fesm/enums/permission-type.enum.js +0 -6
  152. package/fesm/helpers/company-access.helper.js +0 -18
  153. package/fesm/helpers/company-access.helper.spec.js +0 -64
  154. package/fesm/helpers/permission-mode.helper.js +0 -49
  155. package/fesm/helpers/permission-mode.helper.spec.js +0 -50
  156. package/fesm/interfaces/action.interface.js +0 -3
  157. package/fesm/interfaces/iam-module-options.interface.js +0 -3
  158. package/fesm/interfaces/role.interface.js +0 -4
  159. package/fesm/modules/iam.module.js +0 -176
  160. package/fesm/modules/iam.module.spec.js +0 -278
  161. package/fesm/services/action.service.js +0 -327
  162. package/fesm/services/action.service.spec.js +0 -347
  163. package/fesm/services/iam-config.service.js +0 -77
  164. package/fesm/services/iam-config.service.spec.js +0 -106
  165. package/fesm/services/iam-datasource.service.js +0 -78
  166. package/fesm/services/iam-datasource.service.spec.js +0 -106
  167. package/fesm/services/permission-cache.service.js +0 -527
  168. package/fesm/services/permission-cache.service.spec.js +0 -714
  169. package/fesm/services/permission.service.js +0 -904
  170. package/fesm/services/permission.service.spec.js +0 -914
  171. package/fesm/services/role.service.js +0 -214
  172. package/fesm/services/role.service.spec.js +0 -343
  173. package/fesm/types/logic-node.type.js +0 -27
@@ -1,140 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _common = require("@nestjs/common");
6
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
7
- const _rolepermissioncontroller = require("./role-permission.controller");
8
- describe('RolePermissionController', ()=>{
9
- let controller;
10
- let mockPermissionService;
11
- let mockConfig;
12
- beforeEach(()=>{
13
- mockPermissionService = {
14
- assignRoleActions: jest.fn(),
15
- getRoleActions: jest.fn(),
16
- assignUserRoles: jest.fn(),
17
- getUserRoles: jest.fn()
18
- };
19
- mockConfig = {
20
- isCompanyFeatureEnabled: jest.fn().mockReturnValue(false)
21
- };
22
- controller = new _rolepermissioncontroller.RolePermissionController(mockPermissionService, mockConfig);
23
- });
24
- describe('assignRoleActions', ()=>{
25
- it('assigns actions to a role and returns the operation summary', async ()=>{
26
- mockPermissionService.assignRoleActions.mockResolvedValue({
27
- added: 2,
28
- removed: 1,
29
- total: 3
30
- });
31
- const result = await controller.assignRoleActions({
32
- roleId: 'role-1',
33
- actionIds: [
34
- 'action-1',
35
- 'action-2'
36
- ]
37
- });
38
- expect(mockPermissionService.assignRoleActions).toHaveBeenCalledWith({
39
- roleId: 'role-1',
40
- actionIds: [
41
- 'action-1',
42
- 'action-2'
43
- ]
44
- });
45
- expect(result.success).toBe(true);
46
- expect(result.data).toEqual({
47
- added: 2,
48
- removed: 1,
49
- total: 3
50
- });
51
- });
52
- });
53
- describe('getRoleActions', ()=>{
54
- it('returns actions assigned to the role', async ()=>{
55
- mockPermissionService.getRoleActions.mockResolvedValue([
56
- {
57
- actionId: 'action-1'
58
- }
59
- ]);
60
- const result = await controller.getRoleActions({
61
- roleId: 'role-1'
62
- });
63
- expect(mockPermissionService.getRoleActions).toHaveBeenCalledWith('role-1');
64
- expect(result.data).toEqual([
65
- {
66
- actionId: 'action-1'
67
- }
68
- ]);
69
- });
70
- });
71
- describe('assignUserRoles', ()=>{
72
- it('assigns roles to a user when the caller has access to the target company', async ()=>{
73
- mockConfig.isCompanyFeatureEnabled.mockReturnValue(true);
74
- const user = (0, _loggedusermock.buildMockUser)({
75
- companyId: 'company-1'
76
- });
77
- mockPermissionService.assignUserRoles.mockResolvedValue({
78
- added: 1,
79
- removed: 0,
80
- total: 1
81
- });
82
- const result = await controller.assignUserRoles({
83
- userId: 'user-2',
84
- roleIds: [
85
- 'role-1'
86
- ],
87
- companyId: 'company-1'
88
- }, user);
89
- expect(mockPermissionService.assignUserRoles).toHaveBeenCalledWith({
90
- userId: 'user-2',
91
- roleIds: [
92
- 'role-1'
93
- ],
94
- companyId: 'company-1'
95
- });
96
- expect(result.data).toEqual({
97
- added: 1,
98
- removed: 0,
99
- total: 1
100
- });
101
- });
102
- it('rejects assignment when the caller has no access to the target company', async ()=>{
103
- mockConfig.isCompanyFeatureEnabled.mockReturnValue(true);
104
- const user = (0, _loggedusermock.buildMockUser)({
105
- companyId: 'company-1'
106
- });
107
- await expect(controller.assignUserRoles({
108
- userId: 'user-2',
109
- roleIds: [
110
- 'role-1'
111
- ],
112
- companyId: 'company-2'
113
- }, user)).rejects.toThrow(_common.ForbiddenException);
114
- expect(mockPermissionService.assignUserRoles).not.toHaveBeenCalled();
115
- });
116
- });
117
- describe('getUserRoles', ()=>{
118
- it('returns roles assigned to the user scoped by branch and company', async ()=>{
119
- const user = (0, _loggedusermock.buildMockUser)({
120
- companyId: 'company-1'
121
- });
122
- mockPermissionService.getUserRoles.mockResolvedValue([
123
- {
124
- roleId: 'role-1'
125
- }
126
- ]);
127
- const result = await controller.getUserRoles({
128
- userId: 'user-2',
129
- branchId: 'branch-1',
130
- companyId: 'company-1'
131
- }, user);
132
- expect(mockPermissionService.getUserRoles).toHaveBeenCalledWith('user-2', 'branch-1', 'company-1');
133
- expect(result.data).toEqual([
134
- {
135
- roleId: 'role-1'
136
- }
137
- ]);
138
- });
139
- });
140
- });
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "RoleController", {
6
- enumerable: true,
7
- get: function() {
8
- return RoleController;
9
- }
10
- });
11
- const _nestjsshared = require("@flusys/nestjs-shared");
12
- const _common = require("@nestjs/common");
13
- const _swagger = require("@nestjs/swagger");
14
- const _roledto = require("../dtos/role.dto");
15
- const _roleservice = require("../services/role.service");
16
- function _define_property(obj, key, value) {
17
- if (key in obj) {
18
- Object.defineProperty(obj, key, {
19
- value: value,
20
- enumerable: true,
21
- configurable: true,
22
- writable: true
23
- });
24
- } else {
25
- obj[key] = value;
26
- }
27
- return obj;
28
- }
29
- function _ts_decorate(decorators, target, key, desc) {
30
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
31
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32
- 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;
33
- return c > 3 && r && Object.defineProperty(target, key, r), r;
34
- }
35
- function _ts_metadata(k, v) {
36
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
37
- }
38
- function _ts_param(paramIndex, decorator) {
39
- return function(target, key) {
40
- decorator(target, key, paramIndex);
41
- };
42
- }
43
- let RoleController = class RoleController extends (0, _nestjsshared.createApiController)(_roledto.CreateRoleDto, _roledto.UpdateRoleDto, _roledto.RoleResponseDto, {
44
- entityName: 'role',
45
- security: {
46
- insert: {
47
- level: 'permission',
48
- permissions: [
49
- _nestjsshared.ROLE_PERMISSIONS.CREATE
50
- ]
51
- },
52
- insertMany: {
53
- level: 'permission',
54
- permissions: [
55
- _nestjsshared.ROLE_PERMISSIONS.CREATE
56
- ]
57
- },
58
- getById: {
59
- level: 'permission',
60
- permissions: [
61
- _nestjsshared.ROLE_PERMISSIONS.READ
62
- ]
63
- },
64
- getAll: {
65
- level: 'permission',
66
- permissions: [
67
- _nestjsshared.ROLE_PERMISSIONS.READ
68
- ]
69
- },
70
- update: {
71
- level: 'permission',
72
- permissions: [
73
- _nestjsshared.ROLE_PERMISSIONS.UPDATE
74
- ]
75
- },
76
- updateMany: {
77
- level: 'permission',
78
- permissions: [
79
- _nestjsshared.ROLE_PERMISSIONS.UPDATE
80
- ]
81
- },
82
- delete: {
83
- level: 'permission',
84
- permissions: [
85
- _nestjsshared.ROLE_PERMISSIONS.DELETE
86
- ]
87
- }
88
- }
89
- }) {
90
- constructor(roleService){
91
- super(roleService), _define_property(this, "roleService", void 0), this.roleService = roleService;
92
- }
93
- };
94
- RoleController = _ts_decorate([
95
- (0, _swagger.ApiTags)('IAM - Roles'),
96
- (0, _common.Controller)('iam/roles'),
97
- _ts_param(0, (0, _common.Inject)(_roleservice.RoleService)),
98
- _ts_metadata("design:type", Function),
99
- _ts_metadata("design:paramtypes", [
100
- typeof _roleservice.RoleService === "undefined" ? Object : _roleservice.RoleService
101
- ])
102
- ], RoleController);
@@ -1,86 +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 _rolecontroller = require("./role.controller");
7
- function buildRole(overrides = {}) {
8
- return {
9
- id: 'role-1',
10
- name: 'Admin',
11
- description: null,
12
- isActive: true,
13
- readOnly: false,
14
- createdAt: new Date(),
15
- updatedAt: new Date(),
16
- ...overrides
17
- };
18
- }
19
- describe('RoleController', ()=>{
20
- let controller;
21
- let mockRoleService;
22
- beforeEach(()=>{
23
- mockRoleService = {
24
- insert: jest.fn(),
25
- findById: jest.fn(),
26
- getAll: jest.fn(),
27
- update: jest.fn(),
28
- delete: jest.fn()
29
- };
30
- controller = new _rolecontroller.RoleController(mockRoleService);
31
- });
32
- it('wires the injected service onto the generated controller base', ()=>{
33
- expect(controller.roleService).toBe(mockRoleService);
34
- expect(controller.service).toBe(mockRoleService);
35
- });
36
- describe('insert', ()=>{
37
- it('creates a role and returns the mapped response', async ()=>{
38
- const user = (0, _loggedusermock.buildMockUser)();
39
- mockRoleService.insert.mockResolvedValue(buildRole());
40
- const result = await controller.insert({
41
- name: 'Admin'
42
- }, user);
43
- expect(mockRoleService.insert).toHaveBeenCalledWith({
44
- name: 'Admin'
45
- }, user);
46
- expect(result.success).toBe(true);
47
- expect(result.data).toEqual(expect.objectContaining({
48
- id: 'role-1',
49
- name: 'Admin'
50
- }));
51
- });
52
- });
53
- describe('getAll', ()=>{
54
- it('paginates roles and maps the response list', async ()=>{
55
- mockRoleService.getAll.mockResolvedValue({
56
- data: [
57
- buildRole()
58
- ],
59
- total: 1
60
- });
61
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
62
- expect(mockRoleService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
63
- expect(result.data).toHaveLength(1);
64
- });
65
- });
66
- describe('delete', ()=>{
67
- it('delegates soft-delete to the service', async ()=>{
68
- mockRoleService.delete.mockResolvedValue({
69
- count: 1
70
- });
71
- const result = await controller.delete({
72
- id: [
73
- 'role-1'
74
- ],
75
- type: 'delete'
76
- }, (0, _loggedusermock.buildMockUser)());
77
- expect(mockRoleService.delete).toHaveBeenCalledWith({
78
- id: [
79
- 'role-1'
80
- ],
81
- type: 'delete'
82
- }, (0, _loggedusermock.buildMockUser)());
83
- expect(result.success).toBe(true);
84
- });
85
- });
86
- });
@@ -1,129 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "UserActionPermissionController", {
6
- enumerable: true,
7
- get: function() {
8
- return UserActionPermissionController;
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 _iamconfigservice = require("../services/iam-config.service");
17
- const _permissionservice = require("../services/permission.service");
18
- function _define_property(obj, key, value) {
19
- if (key in obj) {
20
- Object.defineProperty(obj, key, {
21
- value: value,
22
- enumerable: true,
23
- configurable: true,
24
- writable: true
25
- });
26
- } else {
27
- obj[key] = value;
28
- }
29
- return obj;
30
- }
31
- function _ts_decorate(decorators, target, key, desc) {
32
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34
- 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;
35
- return c > 3 && r && Object.defineProperty(target, key, r), r;
36
- }
37
- function _ts_metadata(k, v) {
38
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
39
- }
40
- function _ts_param(paramIndex, decorator) {
41
- return function(target, key) {
42
- decorator(target, key, paramIndex);
43
- };
44
- }
45
- let UserActionPermissionController = class UserActionPermissionController {
46
- async assignUserActions(dto, user) {
47
- const result = await this.permissionService.assignUserActions(dto);
48
- return {
49
- success: true,
50
- message: 'User actions updated successfully',
51
- messageKey: _config.PERMISSION_OPERATION_MESSAGES.PROCESS_SUCCESS,
52
- messageVariables: {
53
- added: result.added,
54
- removed: result.removed,
55
- total: result.total
56
- },
57
- data: result
58
- };
59
- }
60
- async getUserActions(dto, user) {
61
- const actions = await this.permissionService.getUserActions(dto.userId, dto.companyId, dto.branchId);
62
- return {
63
- success: true,
64
- message: 'User actions retrieved successfully',
65
- messageKey: _config.USER_ACTION_PERMISSION_MESSAGES.GET_SUCCESS,
66
- data: actions
67
- };
68
- }
69
- // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
70
- constructor(permissionService, config){
71
- _define_property(this, "permissionService", void 0);
72
- _define_property(this, "config", void 0);
73
- this.permissionService = permissionService;
74
- this.config = config;
75
- }
76
- };
77
- _ts_decorate([
78
- (0, _common.Post)('user-actions/assign'),
79
- (0, _nestjsshared.RequirePermission)(_nestjsshared.USER_ACTION_PERMISSIONS.ASSIGN),
80
- (0, _swagger.ApiOperation)({
81
- summary: 'Assign/remove actions to/from user',
82
- description: 'Direct permissions. If company feature enabled, branchId is required.'
83
- }),
84
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.PermissionOperationResultDto),
85
- (0, _swagger.ApiBody)({
86
- type: _permissiondto.AssignUserActionsDto
87
- }),
88
- _ts_param(0, (0, _common.Body)()),
89
- _ts_param(1, (0, _nestjsshared.CurrentUser)()),
90
- _ts_metadata("design:type", Function),
91
- _ts_metadata("design:paramtypes", [
92
- typeof _permissiondto.AssignUserActionsDto === "undefined" ? Object : _permissiondto.AssignUserActionsDto,
93
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
94
- ]),
95
- _ts_metadata("design:returntype", Promise)
96
- ], UserActionPermissionController.prototype, "assignUserActions", null);
97
- _ts_decorate([
98
- (0, _common.Post)('get-user-actions'),
99
- (0, _nestjsshared.RequirePermission)(_nestjsshared.USER_ACTION_PERMISSIONS.READ),
100
- (0, _swagger.ApiOperation)({
101
- summary: 'Get user direct actions',
102
- description: 'Returns direct action permissions for user. Filter by companyId and branchId.'
103
- }),
104
- (0, _nestjsshared.ApiResponseDto)(_permissiondto.UserActionResponseDto, true, 'single'),
105
- (0, _swagger.ApiBody)({
106
- type: _permissiondto.GetUserActionsDto
107
- }),
108
- _ts_param(0, (0, _common.Body)()),
109
- _ts_param(1, (0, _nestjsshared.CurrentUser)()),
110
- _ts_metadata("design:type", Function),
111
- _ts_metadata("design:paramtypes", [
112
- typeof _permissiondto.GetUserActionsDto === "undefined" ? Object : _permissiondto.GetUserActionsDto,
113
- typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
114
- ]),
115
- _ts_metadata("design:returntype", Promise)
116
- ], UserActionPermissionController.prototype, "getUserActions", null);
117
- UserActionPermissionController = _ts_decorate([
118
- (0, _swagger.ApiTags)('IAM - User Action Permissions'),
119
- (0, _common.Controller)('iam/permissions'),
120
- (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard, _nestjsshared.PermissionGuard),
121
- (0, _swagger.ApiBearerAuth)(),
122
- _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
123
- _ts_param(1, (0, _common.Inject)(_iamconfigservice.IAMConfigService)),
124
- _ts_metadata("design:type", Function),
125
- _ts_metadata("design:paramtypes", [
126
- typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService,
127
- typeof _iamconfigservice.IAMConfigService === "undefined" ? Object : _iamconfigservice.IAMConfigService
128
- ])
129
- ], UserActionPermissionController);
@@ -1,68 +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 _useractionpermissioncontroller = require("./user-action-permission.controller");
7
- describe('UserActionPermissionController', ()=>{
8
- let controller;
9
- let mockPermissionService;
10
- let mockConfig;
11
- beforeEach(()=>{
12
- mockPermissionService = {
13
- assignUserActions: jest.fn(),
14
- getUserActions: jest.fn()
15
- };
16
- mockConfig = {};
17
- controller = new _useractionpermissioncontroller.UserActionPermissionController(mockPermissionService, mockConfig);
18
- });
19
- describe('assignUserActions', ()=>{
20
- it('assigns direct action permissions to a user', async ()=>{
21
- const user = (0, _loggedusermock.buildMockUser)();
22
- mockPermissionService.assignUserActions.mockResolvedValue({
23
- added: 1,
24
- removed: 0,
25
- total: 1
26
- });
27
- const result = await controller.assignUserActions({
28
- userId: 'user-2',
29
- actionIds: [
30
- 'action-1'
31
- ]
32
- }, user);
33
- expect(mockPermissionService.assignUserActions).toHaveBeenCalledWith({
34
- userId: 'user-2',
35
- actionIds: [
36
- 'action-1'
37
- ]
38
- });
39
- expect(result.success).toBe(true);
40
- expect(result.data).toEqual({
41
- added: 1,
42
- removed: 0,
43
- total: 1
44
- });
45
- });
46
- });
47
- describe('getUserActions', ()=>{
48
- it('returns direct action permissions for a user scoped by branch/company', async ()=>{
49
- const user = (0, _loggedusermock.buildMockUser)();
50
- mockPermissionService.getUserActions.mockResolvedValue([
51
- {
52
- actionId: 'action-1'
53
- }
54
- ]);
55
- const result = await controller.getUserActions({
56
- userId: 'user-2',
57
- branchId: 'branch-1',
58
- companyId: 'company-1'
59
- }, user);
60
- expect(mockPermissionService.getUserActions).toHaveBeenCalledWith('user-2', 'company-1', 'branch-1');
61
- expect(result.data).toEqual([
62
- {
63
- actionId: 'action-1'
64
- }
65
- ]);
66
- });
67
- });
68
- });