@flusys/nestjs-iam 0.1.0-beta.1 → 0.1.0-beta.2

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 (118) hide show
  1. package/README.md +665 -0
  2. package/cjs/config/iam.constants.js +11 -0
  3. package/cjs/config/index.js +18 -0
  4. package/cjs/controllers/action.controller.js +117 -0
  5. package/cjs/controllers/company-action-permission.controller.js +110 -0
  6. package/cjs/controllers/index.js +23 -0
  7. package/cjs/controllers/my-permission.controller.js +90 -0
  8. package/cjs/controllers/role-permission.controller.js +160 -0
  9. package/cjs/controllers/role.controller.js +58 -0
  10. package/cjs/controllers/user-action-permission.controller.js +110 -0
  11. package/cjs/docs/iam-swagger.config.js +202 -0
  12. package/cjs/docs/index.js +18 -0
  13. package/cjs/dtos/action.dto.js +347 -0
  14. package/cjs/dtos/index.js +21 -0
  15. package/cjs/dtos/permission.dto.js +554 -0
  16. package/cjs/dtos/role.dto.js +238 -0
  17. package/cjs/entities/action-base.entity.js +135 -0
  18. package/cjs/entities/action.entity.js +28 -0
  19. package/cjs/entities/index.js +81 -0
  20. package/cjs/entities/permission-base.entity.js +156 -0
  21. package/cjs/entities/permission-with-company.entity.js +99 -0
  22. package/cjs/entities/role-base.entity.js +86 -0
  23. package/cjs/entities/role-with-company.entity.js +55 -0
  24. package/cjs/entities/role.entity.js +25 -0
  25. package/cjs/entities/user-iam-permission.entity.js +57 -0
  26. package/cjs/enums/action-type.enum.js +22 -0
  27. package/cjs/enums/index.js +19 -0
  28. package/cjs/enums/permission-type.enum.js +16 -0
  29. package/cjs/helpers/index.js +19 -0
  30. package/cjs/helpers/permission-evaluator.helper.js +175 -0
  31. package/cjs/helpers/permission-mode.helper.js +49 -0
  32. package/cjs/index.js +28 -79
  33. package/cjs/interfaces/action.interface.js +4 -0
  34. package/cjs/interfaces/iam-module-async-options.interface.js +4 -0
  35. package/cjs/interfaces/iam-module-options.interface.js +18 -0
  36. package/cjs/interfaces/index.js +21 -0
  37. package/cjs/interfaces/role.interface.js +7 -0
  38. package/cjs/modules/iam.module.js +237 -0
  39. package/cjs/modules/index.js +18 -0
  40. package/cjs/services/action.service.js +253 -0
  41. package/cjs/services/iam-config.service.js +107 -0
  42. package/cjs/services/iam-datasource.provider.js +205 -0
  43. package/cjs/services/index.js +23 -0
  44. package/cjs/services/permission-cache.service.js +308 -0
  45. package/cjs/services/permission.service.js +1020 -0
  46. package/cjs/services/role.service.js +181 -0
  47. package/cjs/types/index.js +18 -0
  48. package/cjs/types/logic-node.type.js +54 -0
  49. package/fesm/config/iam.constants.js +1 -0
  50. package/fesm/config/index.js +1 -0
  51. package/fesm/controllers/action.controller.js +107 -0
  52. package/fesm/controllers/company-action-permission.controller.js +100 -0
  53. package/fesm/controllers/index.js +7 -0
  54. package/fesm/controllers/my-permission.controller.js +80 -0
  55. package/fesm/controllers/role-permission.controller.js +150 -0
  56. package/fesm/controllers/role.controller.js +48 -0
  57. package/fesm/controllers/user-action-permission.controller.js +100 -0
  58. package/fesm/docs/iam-swagger.config.js +192 -0
  59. package/fesm/docs/index.js +1 -0
  60. package/fesm/dtos/action.dto.js +317 -0
  61. package/fesm/dtos/index.js +4 -0
  62. package/fesm/dtos/permission.dto.js +490 -0
  63. package/fesm/dtos/role.dto.js +214 -0
  64. package/fesm/entities/action-base.entity.js +128 -0
  65. package/fesm/entities/action.entity.js +18 -0
  66. package/fesm/entities/index.js +56 -0
  67. package/fesm/entities/permission-base.entity.js +138 -0
  68. package/fesm/entities/permission-with-company.entity.js +89 -0
  69. package/fesm/entities/role-base.entity.js +79 -0
  70. package/fesm/entities/role-with-company.entity.js +45 -0
  71. package/fesm/entities/role.entity.js +15 -0
  72. package/fesm/entities/user-iam-permission.entity.js +38 -0
  73. package/fesm/enums/action-type.enum.js +12 -0
  74. package/fesm/enums/index.js +2 -0
  75. package/fesm/enums/permission-type.enum.js +6 -0
  76. package/fesm/helpers/index.js +2 -0
  77. package/fesm/helpers/permission-evaluator.helper.js +165 -0
  78. package/fesm/helpers/permission-mode.helper.js +49 -0
  79. package/fesm/index.js +11 -79
  80. package/fesm/interfaces/action.interface.js +3 -0
  81. package/fesm/interfaces/iam-module-async-options.interface.js +3 -0
  82. package/fesm/interfaces/iam-module-options.interface.js +1 -0
  83. package/fesm/interfaces/index.js +4 -0
  84. package/fesm/interfaces/role.interface.js +4 -0
  85. package/fesm/modules/iam.module.js +227 -0
  86. package/fesm/modules/index.js +1 -0
  87. package/fesm/services/action.service.js +243 -0
  88. package/fesm/services/iam-config.service.js +97 -0
  89. package/fesm/services/iam-datasource.provider.js +154 -0
  90. package/fesm/services/index.js +6 -0
  91. package/fesm/services/permission-cache.service.js +298 -0
  92. package/fesm/services/permission.service.js +1010 -0
  93. package/fesm/services/role.service.js +171 -0
  94. package/fesm/types/index.js +1 -0
  95. package/fesm/types/logic-node.type.js +36 -0
  96. package/package.json +25 -25
  97. package/cjs/config-index.js +0 -1
  98. package/cjs/controllers-index.js +0 -1
  99. package/cjs/docs-index.js +0 -79
  100. package/cjs/dtos-index.js +0 -1
  101. package/cjs/entities-index.js +0 -1
  102. package/cjs/enums-index.js +0 -1
  103. package/cjs/helpers-index.js +0 -1
  104. package/cjs/interfaces-index.js +0 -1
  105. package/cjs/modules-index.js +0 -1
  106. package/cjs/services-index.js +0 -1
  107. package/cjs/types-index.js +0 -1
  108. package/fesm/config-index.js +0 -1
  109. package/fesm/controllers-index.js +0 -1
  110. package/fesm/docs-index.js +0 -79
  111. package/fesm/dtos-index.js +0 -1
  112. package/fesm/entities-index.js +0 -1
  113. package/fesm/enums-index.js +0 -1
  114. package/fesm/helpers-index.js +0 -1
  115. package/fesm/interfaces-index.js +0 -0
  116. package/fesm/modules-index.js +0 -1
  117. package/fesm/services-index.js +0 -1
  118. package/fesm/types-index.js +0 -1
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ActionController", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ActionController;
9
+ }
10
+ });
11
+ const _guards = require("@flusys/nestjs-shared/guards");
12
+ const _nestjsshared = require("@flusys/nestjs-shared");
13
+ const _common = require("@nestjs/common");
14
+ const _swagger = require("@nestjs/swagger");
15
+ const _actiondto = require("../dtos/action.dto");
16
+ const _actionservice = require("../services/action.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 ActionController = class ActionController extends (0, _nestjsshared.createApiController)(_actiondto.CreateActionDto, _actiondto.UpdateActionDto, _actiondto.ActionResponseDto) {
45
+ async getActionsForPermission(user) {
46
+ const actions = await this.actionService.getActionsForPermission(user);
47
+ return {
48
+ success: true,
49
+ message: 'Actions retrieved successfully',
50
+ data: actions
51
+ };
52
+ }
53
+ async getActionTree(query, user) {
54
+ const tree = await this.actionService.getActionTree(user, query.search, query.isActive, query.withDeleted);
55
+ return {
56
+ success: true,
57
+ message: 'Action tree retrieved successfully',
58
+ data: tree
59
+ };
60
+ }
61
+ constructor(actionService){
62
+ super(actionService), _define_property(this, "actionService", void 0), this.actionService = actionService;
63
+ }
64
+ };
65
+ _ts_decorate([
66
+ (0, _common.Get)('tree-for-permission'),
67
+ (0, _common.UseGuards)(_guards.JwtAuthGuard),
68
+ (0, _swagger.ApiBearerAuth)(),
69
+ (0, _swagger.ApiOperation)({
70
+ summary: 'Get actions for permission assignment',
71
+ description: 'Returns actions available for permission assignment. If company feature enabled, filtered by company whitelist.'
72
+ }),
73
+ (0, _swagger.ApiResponse)({
74
+ status: 200,
75
+ type: _nestjsshared.SingleResponseDto
76
+ }),
77
+ _ts_param(0, (0, _nestjsshared.CurrentUser)()),
78
+ _ts_metadata("design:type", Function),
79
+ _ts_metadata("design:paramtypes", [
80
+ typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
81
+ ]),
82
+ _ts_metadata("design:returntype", Promise)
83
+ ], ActionController.prototype, "getActionsForPermission", null);
84
+ _ts_decorate([
85
+ (0, _common.Post)('tree'),
86
+ (0, _common.UseGuards)(_guards.JwtAuthGuard),
87
+ (0, _swagger.ApiBearerAuth)(),
88
+ (0, _swagger.ApiOperation)({
89
+ summary: 'Get actions in hierarchical tree structure',
90
+ description: 'Returns all actions organized in a parent-child tree structure. Supports optional search and filtering.'
91
+ }),
92
+ (0, _swagger.ApiResponse)({
93
+ status: 200,
94
+ description: 'Actions tree retrieved successfully',
95
+ type: _nestjsshared.SingleResponseDto
96
+ }),
97
+ (0, _swagger.ApiBody)({
98
+ type: _actiondto.ActionTreeQueryDto
99
+ }),
100
+ _ts_param(0, (0, _common.Body)()),
101
+ _ts_param(1, (0, _nestjsshared.CurrentUser)()),
102
+ _ts_metadata("design:type", Function),
103
+ _ts_metadata("design:paramtypes", [
104
+ typeof _actiondto.ActionTreeQueryDto === "undefined" ? Object : _actiondto.ActionTreeQueryDto,
105
+ typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
106
+ ]),
107
+ _ts_metadata("design:returntype", Promise)
108
+ ], ActionController.prototype, "getActionTree", null);
109
+ ActionController = _ts_decorate([
110
+ (0, _swagger.ApiTags)('IAM - Actions'),
111
+ (0, _common.Controller)('iam/actions'),
112
+ _ts_param(0, (0, _common.Inject)(_actionservice.ActionService)),
113
+ _ts_metadata("design:type", Function),
114
+ _ts_metadata("design:paramtypes", [
115
+ typeof _actionservice.ActionService === "undefined" ? Object : _actionservice.ActionService
116
+ ])
117
+ ], ActionController);
@@ -0,0 +1,110 @@
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 _permissiondto = require("../dtos/permission.dto");
15
+ const _permissionservice = require("../services/permission.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 CompanyActionPermissionController = class CompanyActionPermissionController {
44
+ async assignCompanyActions(dto) {
45
+ return this.permissionService.assignCompanyActions(dto);
46
+ }
47
+ async getCompanyActions(companyId, query) {
48
+ const actions = await this.permissionService.getCompanyActions(companyId);
49
+ return {
50
+ success: true,
51
+ message: 'Company actions retrieved successfully',
52
+ data: actions
53
+ };
54
+ }
55
+ // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
56
+ constructor(permissionService){
57
+ _define_property(this, "permissionService", void 0);
58
+ this.permissionService = permissionService;
59
+ }
60
+ };
61
+ _ts_decorate([
62
+ (0, _common.Post)('company-actions/assign'),
63
+ (0, _swagger.ApiOperation)({
64
+ summary: 'Whitelist actions for company',
65
+ description: 'Controls which actions are available to company users/roles.'
66
+ }),
67
+ (0, _swagger.ApiResponse)({
68
+ status: 200,
69
+ type: _permissiondto.PermissionOperationResultDto
70
+ }),
71
+ (0, _swagger.ApiBody)({
72
+ type: _permissiondto.AssignCompanyActionsDto
73
+ }),
74
+ _ts_param(0, (0, _common.Body)()),
75
+ _ts_metadata("design:type", Function),
76
+ _ts_metadata("design:paramtypes", [
77
+ typeof _permissiondto.AssignCompanyActionsDto === "undefined" ? Object : _permissiondto.AssignCompanyActionsDto
78
+ ]),
79
+ _ts_metadata("design:returntype", Promise)
80
+ ], CompanyActionPermissionController.prototype, "assignCompanyActions", null);
81
+ _ts_decorate([
82
+ (0, _common.Get)('company-actions/:companyId'),
83
+ (0, _swagger.ApiOperation)({
84
+ summary: 'Get company whitelisted actions',
85
+ description: 'Returns actions available to company.'
86
+ }),
87
+ (0, _swagger.ApiResponse)({
88
+ status: 200,
89
+ type: _nestjsshared.SingleResponseDto
90
+ }),
91
+ _ts_param(0, (0, _common.Param)('companyId')),
92
+ _ts_param(1, (0, _common.Query)()),
93
+ _ts_metadata("design:type", Function),
94
+ _ts_metadata("design:paramtypes", [
95
+ String,
96
+ typeof _permissiondto.GetCompanyActionsDto === "undefined" ? Object : _permissiondto.GetCompanyActionsDto
97
+ ]),
98
+ _ts_metadata("design:returntype", Promise)
99
+ ], CompanyActionPermissionController.prototype, "getCompanyActions", null);
100
+ CompanyActionPermissionController = _ts_decorate([
101
+ (0, _swagger.ApiTags)('IAM - Company Action Permissions'),
102
+ (0, _common.Controller)('iam/permissions'),
103
+ (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
104
+ (0, _swagger.ApiBearerAuth)(),
105
+ _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
106
+ _ts_metadata("design:type", Function),
107
+ _ts_metadata("design:paramtypes", [
108
+ typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
109
+ ])
110
+ ], CompanyActionPermissionController);
@@ -0,0 +1,23 @@
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
+ }
@@ -0,0 +1,90 @@
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 _guards = require("@flusys/nestjs-shared/guards");
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
+ return this.permissionService.getMyPermissions(user.id, user.branchId ?? null, user.companyId ?? null, query.parentCodes);
47
+ }
48
+ // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
49
+ constructor(permissionService){
50
+ _define_property(this, "permissionService", void 0);
51
+ this.permissionService = permissionService;
52
+ }
53
+ };
54
+ _ts_decorate([
55
+ (0, _common.Post)('my-permissions'),
56
+ (0, _swagger.ApiOperation)({
57
+ summary: 'Get current user permissions',
58
+ description: 'Returns complete permissions for authenticated user. Includes menus, frontend actions, and caches endpoint permissions. Optionally filter by parent codes.'
59
+ }),
60
+ (0, _swagger.ApiResponse)({
61
+ status: 200,
62
+ type: _permissiondto.MyPermissionsResponseDto
63
+ }),
64
+ (0, _swagger.ApiResponse)({
65
+ status: 401,
66
+ description: 'Unauthorized'
67
+ }),
68
+ (0, _swagger.ApiBody)({
69
+ type: _permissiondto.MyPermissionsQueryDto
70
+ }),
71
+ _ts_param(0, (0, _common.Body)()),
72
+ _ts_param(1, (0, _nestjsshared.CurrentUser)()),
73
+ _ts_metadata("design:type", Function),
74
+ _ts_metadata("design:paramtypes", [
75
+ typeof _permissiondto.MyPermissionsQueryDto === "undefined" ? Object : _permissiondto.MyPermissionsQueryDto,
76
+ typeof _nestjsshared.ILoggedUserInfo === "undefined" ? Object : _nestjsshared.ILoggedUserInfo
77
+ ]),
78
+ _ts_metadata("design:returntype", Promise)
79
+ ], MyPermissionController.prototype, "getMyPermissions", null);
80
+ MyPermissionController = _ts_decorate([
81
+ (0, _swagger.ApiTags)('IAM - My Permissions'),
82
+ (0, _common.Controller)('iam/permissions'),
83
+ (0, _common.UseGuards)(_guards.JwtAuthGuard),
84
+ (0, _swagger.ApiBearerAuth)(),
85
+ _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
86
+ _ts_metadata("design:type", Function),
87
+ _ts_metadata("design:paramtypes", [
88
+ typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
89
+ ])
90
+ ], MyPermissionController);
@@ -0,0 +1,160 @@
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 _permissiondto = require("../dtos/permission.dto");
15
+ const _permissionservice = require("../services/permission.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 RolePermissionController = class RolePermissionController {
44
+ async assignRoleActions(dto) {
45
+ return this.permissionService.assignRoleActions(dto);
46
+ }
47
+ async getRoleActions(roleId, query) {
48
+ const actions = await this.permissionService.getRoleActions(roleId);
49
+ return {
50
+ success: true,
51
+ message: 'Role actions retrieved successfully',
52
+ data: actions
53
+ };
54
+ }
55
+ async assignUserRoles(dto) {
56
+ return this.permissionService.assignUserRoles(dto);
57
+ }
58
+ async getUserRoles(userId, query) {
59
+ const roles = await this.permissionService.getUserRoles(userId, query.branchId, query.companyId);
60
+ return {
61
+ success: true,
62
+ message: 'User roles retrieved successfully',
63
+ data: roles
64
+ };
65
+ }
66
+ // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
67
+ constructor(permissionService){
68
+ _define_property(this, "permissionService", void 0);
69
+ this.permissionService = permissionService;
70
+ }
71
+ };
72
+ _ts_decorate([
73
+ (0, _common.Post)('role-actions/assign'),
74
+ (0, _swagger.ApiOperation)({
75
+ summary: 'Assign/remove actions to/from role',
76
+ description: 'RBAC mode. No branch scoping.'
77
+ }),
78
+ (0, _swagger.ApiResponse)({
79
+ status: 200,
80
+ type: _permissiondto.PermissionOperationResultDto
81
+ }),
82
+ (0, _swagger.ApiBody)({
83
+ type: _permissiondto.AssignRoleActionsDto
84
+ }),
85
+ _ts_param(0, (0, _common.Body)()),
86
+ _ts_metadata("design:type", Function),
87
+ _ts_metadata("design:paramtypes", [
88
+ typeof _permissiondto.AssignRoleActionsDto === "undefined" ? Object : _permissiondto.AssignRoleActionsDto
89
+ ]),
90
+ _ts_metadata("design:returntype", Promise)
91
+ ], RolePermissionController.prototype, "assignRoleActions", null);
92
+ _ts_decorate([
93
+ (0, _common.Get)('role-actions/:roleId'),
94
+ (0, _swagger.ApiOperation)({
95
+ summary: 'Get role actions',
96
+ description: 'Returns actions assigned to role.'
97
+ }),
98
+ (0, _swagger.ApiResponse)({
99
+ status: 200,
100
+ type: _nestjsshared.SingleResponseDto
101
+ }),
102
+ _ts_param(0, (0, _common.Param)('roleId')),
103
+ _ts_param(1, (0, _common.Query)()),
104
+ _ts_metadata("design:type", Function),
105
+ _ts_metadata("design:paramtypes", [
106
+ String,
107
+ typeof _permissiondto.GetRoleActionsDto === "undefined" ? Object : _permissiondto.GetRoleActionsDto
108
+ ]),
109
+ _ts_metadata("design:returntype", Promise)
110
+ ], RolePermissionController.prototype, "getRoleActions", null);
111
+ _ts_decorate([
112
+ (0, _common.Post)('user-roles/assign'),
113
+ (0, _swagger.ApiOperation)({
114
+ summary: 'Assign/remove roles to/from user',
115
+ description: 'RBAC mode. If company feature enabled, branchId is required.'
116
+ }),
117
+ (0, _swagger.ApiResponse)({
118
+ status: 200,
119
+ type: _permissiondto.PermissionOperationResultDto
120
+ }),
121
+ (0, _swagger.ApiBody)({
122
+ type: _permissiondto.AssignUserRolesDto
123
+ }),
124
+ _ts_param(0, (0, _common.Body)()),
125
+ _ts_metadata("design:type", Function),
126
+ _ts_metadata("design:paramtypes", [
127
+ typeof _permissiondto.AssignUserRolesDto === "undefined" ? Object : _permissiondto.AssignUserRolesDto
128
+ ]),
129
+ _ts_metadata("design:returntype", Promise)
130
+ ], RolePermissionController.prototype, "assignUserRoles", null);
131
+ _ts_decorate([
132
+ (0, _common.Get)('user-roles/:userId'),
133
+ (0, _swagger.ApiOperation)({
134
+ summary: 'Get user roles',
135
+ description: 'Returns roles assigned to user. Filter by companyId and branchId.'
136
+ }),
137
+ (0, _swagger.ApiResponse)({
138
+ status: 200,
139
+ type: _nestjsshared.SingleResponseDto
140
+ }),
141
+ _ts_param(0, (0, _common.Param)('userId')),
142
+ _ts_param(1, (0, _common.Query)()),
143
+ _ts_metadata("design:type", Function),
144
+ _ts_metadata("design:paramtypes", [
145
+ String,
146
+ typeof _permissiondto.GetUserRolesDto === "undefined" ? Object : _permissiondto.GetUserRolesDto
147
+ ]),
148
+ _ts_metadata("design:returntype", Promise)
149
+ ], RolePermissionController.prototype, "getUserRoles", null);
150
+ RolePermissionController = _ts_decorate([
151
+ (0, _swagger.ApiTags)('IAM - Role Permissions'),
152
+ (0, _common.Controller)('iam/permissions'),
153
+ (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
154
+ (0, _swagger.ApiBearerAuth)(),
155
+ _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
156
+ _ts_metadata("design:type", Function),
157
+ _ts_metadata("design:paramtypes", [
158
+ typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
159
+ ])
160
+ ], RolePermissionController);
@@ -0,0 +1,58 @@
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 _classes = require("@flusys/nestjs-shared/classes");
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, _classes.createApiController)(_roledto.CreateRoleDto, _roledto.UpdateRoleDto, _roledto.RoleResponseDto, {
44
+ security: 'jwt'
45
+ }) {
46
+ constructor(roleService){
47
+ super(roleService), _define_property(this, "roleService", void 0), this.roleService = roleService;
48
+ }
49
+ };
50
+ RoleController = _ts_decorate([
51
+ (0, _swagger.ApiTags)('IAM - Roles'),
52
+ (0, _common.Controller)('iam/roles'),
53
+ _ts_param(0, (0, _common.Inject)(_roleservice.RoleService)),
54
+ _ts_metadata("design:type", Function),
55
+ _ts_metadata("design:paramtypes", [
56
+ typeof _roleservice.RoleService === "undefined" ? Object : _roleservice.RoleService
57
+ ])
58
+ ], RoleController);
@@ -0,0 +1,110 @@
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 _permissiondto = require("../dtos/permission.dto");
15
+ const _permissionservice = require("../services/permission.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 UserActionPermissionController = class UserActionPermissionController {
44
+ async assignUserActions(dto) {
45
+ return this.permissionService.assignUserActions(dto);
46
+ }
47
+ async getUserActions(userId, query) {
48
+ const actions = await this.permissionService.getUserActions(userId, query.branchId, query.companyId);
49
+ return {
50
+ success: true,
51
+ message: 'User actions retrieved successfully',
52
+ data: actions
53
+ };
54
+ }
55
+ // NOTE: @Inject() required for bundled code - type metadata may be lost during esbuild
56
+ constructor(permissionService){
57
+ _define_property(this, "permissionService", void 0);
58
+ this.permissionService = permissionService;
59
+ }
60
+ };
61
+ _ts_decorate([
62
+ (0, _common.Post)('user-actions/assign'),
63
+ (0, _swagger.ApiOperation)({
64
+ summary: 'Assign/remove actions to/from user',
65
+ description: 'Direct permissions. If company feature enabled, branchId is required.'
66
+ }),
67
+ (0, _swagger.ApiResponse)({
68
+ status: 200,
69
+ type: _permissiondto.PermissionOperationResultDto
70
+ }),
71
+ (0, _swagger.ApiBody)({
72
+ type: _permissiondto.AssignUserActionsDto
73
+ }),
74
+ _ts_param(0, (0, _common.Body)()),
75
+ _ts_metadata("design:type", Function),
76
+ _ts_metadata("design:paramtypes", [
77
+ typeof _permissiondto.AssignUserActionsDto === "undefined" ? Object : _permissiondto.AssignUserActionsDto
78
+ ]),
79
+ _ts_metadata("design:returntype", Promise)
80
+ ], UserActionPermissionController.prototype, "assignUserActions", null);
81
+ _ts_decorate([
82
+ (0, _common.Get)('user-actions/:userId'),
83
+ (0, _swagger.ApiOperation)({
84
+ summary: 'Get user direct actions',
85
+ description: 'Returns direct action permissions for user. Filter by companyId and branchId.'
86
+ }),
87
+ (0, _swagger.ApiResponse)({
88
+ status: 200,
89
+ type: _nestjsshared.SingleResponseDto
90
+ }),
91
+ _ts_param(0, (0, _common.Param)('userId')),
92
+ _ts_param(1, (0, _common.Query)()),
93
+ _ts_metadata("design:type", Function),
94
+ _ts_metadata("design:paramtypes", [
95
+ String,
96
+ typeof _permissiondto.GetUserActionsDto === "undefined" ? Object : _permissiondto.GetUserActionsDto
97
+ ]),
98
+ _ts_metadata("design:returntype", Promise)
99
+ ], UserActionPermissionController.prototype, "getUserActions", null);
100
+ UserActionPermissionController = _ts_decorate([
101
+ (0, _swagger.ApiTags)('IAM - User Action Permissions'),
102
+ (0, _common.Controller)('iam/permissions'),
103
+ (0, _common.UseGuards)(_nestjsshared.JwtAuthGuard),
104
+ (0, _swagger.ApiBearerAuth)(),
105
+ _ts_param(0, (0, _common.Inject)(_permissionservice.PermissionService)),
106
+ _ts_metadata("design:type", Function),
107
+ _ts_metadata("design:paramtypes", [
108
+ typeof _permissionservice.PermissionService === "undefined" ? Object : _permissionservice.PermissionService
109
+ ])
110
+ ], UserActionPermissionController);