@flusys/nestjs-iam 0.1.0-alpha.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,238 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get CreateRoleDto () {
13
+ return CreateRoleDto;
14
+ },
15
+ get RoleQueryDto () {
16
+ return RoleQueryDto;
17
+ },
18
+ get RoleResponseDto () {
19
+ return RoleResponseDto;
20
+ },
21
+ get UpdateRoleDto () {
22
+ return UpdateRoleDto;
23
+ }
24
+ });
25
+ const _swagger = require("@nestjs/swagger");
26
+ const _classvalidator = require("class-validator");
27
+ function _define_property(obj, key, value) {
28
+ if (key in obj) {
29
+ Object.defineProperty(obj, key, {
30
+ value: value,
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true
34
+ });
35
+ } else {
36
+ obj[key] = value;
37
+ }
38
+ return obj;
39
+ }
40
+ function _ts_decorate(decorators, target, key, desc) {
41
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43
+ 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;
44
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
45
+ }
46
+ function _ts_metadata(k, v) {
47
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
48
+ }
49
+ let CreateRoleDto = class CreateRoleDto {
50
+ constructor(){
51
+ _define_property(this, "name", void 0);
52
+ _define_property(this, "description", void 0);
53
+ _define_property(this, "companyId", void 0);
54
+ _define_property(this, "isActive", void 0);
55
+ _define_property(this, "serial", void 0);
56
+ _define_property(this, "metadata", void 0);
57
+ }
58
+ };
59
+ _ts_decorate([
60
+ (0, _swagger.ApiProperty)({
61
+ description: 'Role name',
62
+ example: 'Manager'
63
+ }),
64
+ (0, _classvalidator.IsString)(),
65
+ (0, _classvalidator.IsNotEmpty)(),
66
+ (0, _classvalidator.MaxLength)(255),
67
+ _ts_metadata("design:type", String)
68
+ ], CreateRoleDto.prototype, "name", void 0);
69
+ _ts_decorate([
70
+ (0, _swagger.ApiProperty)({
71
+ description: 'Role description',
72
+ example: 'Management level access',
73
+ required: false
74
+ }),
75
+ (0, _classvalidator.IsString)(),
76
+ (0, _classvalidator.IsOptional)(),
77
+ (0, _classvalidator.MaxLength)(500),
78
+ _ts_metadata("design:type", String)
79
+ ], CreateRoleDto.prototype, "description", void 0);
80
+ _ts_decorate([
81
+ (0, _swagger.ApiProperty)({
82
+ description: 'Company ID (scope role to specific company) - Only available when company feature is enabled',
83
+ example: '123e4567-e89b-12d3-a456-426614174000',
84
+ required: false
85
+ }),
86
+ (0, _classvalidator.IsUUID)(),
87
+ (0, _classvalidator.IsOptional)(),
88
+ _ts_metadata("design:type", String)
89
+ ], CreateRoleDto.prototype, "companyId", void 0);
90
+ _ts_decorate([
91
+ (0, _swagger.ApiProperty)({
92
+ description: 'Active status',
93
+ default: true,
94
+ required: false
95
+ }),
96
+ (0, _classvalidator.IsBoolean)(),
97
+ (0, _classvalidator.IsOptional)(),
98
+ _ts_metadata("design:type", Boolean)
99
+ ], CreateRoleDto.prototype, "isActive", void 0);
100
+ _ts_decorate([
101
+ (0, _swagger.ApiProperty)({
102
+ description: 'Display order',
103
+ required: false
104
+ }),
105
+ (0, _classvalidator.IsInt)(),
106
+ (0, _classvalidator.IsOptional)(),
107
+ _ts_metadata("design:type", Number)
108
+ ], CreateRoleDto.prototype, "serial", void 0);
109
+ _ts_decorate([
110
+ (0, _swagger.ApiProperty)({
111
+ description: 'Additional metadata',
112
+ required: false
113
+ }),
114
+ (0, _classvalidator.IsOptional)(),
115
+ _ts_metadata("design:type", typeof Record === "undefined" ? Object : Record)
116
+ ], CreateRoleDto.prototype, "metadata", void 0);
117
+ let UpdateRoleDto = class UpdateRoleDto extends (0, _swagger.PartialType)(CreateRoleDto) {
118
+ constructor(...args){
119
+ super(...args), _define_property(this, "id", void 0);
120
+ }
121
+ };
122
+ _ts_decorate([
123
+ (0, _swagger.ApiProperty)({
124
+ description: 'Role ID',
125
+ example: '123e4567-e89b-12d3-a456-426614174000'
126
+ }),
127
+ (0, _classvalidator.IsUUID)(),
128
+ (0, _classvalidator.IsNotEmpty)(),
129
+ _ts_metadata("design:type", String)
130
+ ], UpdateRoleDto.prototype, "id", void 0);
131
+ let RoleQueryDto = class RoleQueryDto {
132
+ constructor(){
133
+ _define_property(this, "companyId", void 0);
134
+ _define_property(this, "isActive", void 0);
135
+ }
136
+ };
137
+ _ts_decorate([
138
+ (0, _swagger.ApiProperty)({
139
+ description: 'Filter by company ID - Only available when company feature is enabled',
140
+ required: false
141
+ }),
142
+ (0, _classvalidator.IsUUID)(),
143
+ (0, _classvalidator.IsOptional)(),
144
+ _ts_metadata("design:type", String)
145
+ ], RoleQueryDto.prototype, "companyId", void 0);
146
+ _ts_decorate([
147
+ (0, _swagger.ApiProperty)({
148
+ description: 'Filter by active status',
149
+ required: false
150
+ }),
151
+ (0, _classvalidator.IsBoolean)(),
152
+ (0, _classvalidator.IsOptional)(),
153
+ _ts_metadata("design:type", Boolean)
154
+ ], RoleQueryDto.prototype, "isActive", void 0);
155
+ let RoleResponseDto = class RoleResponseDto {
156
+ constructor(){
157
+ _define_property(this, "id", void 0);
158
+ _define_property(this, "readOnly", void 0);
159
+ _define_property(this, "name", void 0);
160
+ _define_property(this, "description", void 0);
161
+ _define_property(this, "companyId", void 0);
162
+ _define_property(this, "isActive", void 0);
163
+ _define_property(this, "serial", void 0);
164
+ _define_property(this, "metadata", void 0);
165
+ _define_property(this, "createdAt", void 0);
166
+ _define_property(this, "updatedAt", void 0);
167
+ _define_property(this, "deletedAt", void 0);
168
+ _define_property(this, "createdById", void 0);
169
+ _define_property(this, "updatedById", void 0);
170
+ _define_property(this, "deletedById", void 0);
171
+ }
172
+ };
173
+ _ts_decorate([
174
+ (0, _swagger.ApiProperty)(),
175
+ _ts_metadata("design:type", String)
176
+ ], RoleResponseDto.prototype, "id", void 0);
177
+ _ts_decorate([
178
+ (0, _swagger.ApiProperty)(),
179
+ _ts_metadata("design:type", Boolean)
180
+ ], RoleResponseDto.prototype, "readOnly", void 0);
181
+ _ts_decorate([
182
+ (0, _swagger.ApiProperty)(),
183
+ _ts_metadata("design:type", String)
184
+ ], RoleResponseDto.prototype, "name", void 0);
185
+ _ts_decorate([
186
+ (0, _swagger.ApiProperty)(),
187
+ _ts_metadata("design:type", Object)
188
+ ], RoleResponseDto.prototype, "description", void 0);
189
+ _ts_decorate([
190
+ (0, _swagger.ApiProperty)(),
191
+ _ts_metadata("design:type", Object)
192
+ ], RoleResponseDto.prototype, "companyId", void 0);
193
+ _ts_decorate([
194
+ (0, _swagger.ApiProperty)(),
195
+ _ts_metadata("design:type", Boolean)
196
+ ], RoleResponseDto.prototype, "isActive", void 0);
197
+ _ts_decorate([
198
+ (0, _swagger.ApiProperty)(),
199
+ _ts_metadata("design:type", Object)
200
+ ], RoleResponseDto.prototype, "serial", void 0);
201
+ _ts_decorate([
202
+ (0, _swagger.ApiProperty)({
203
+ required: false
204
+ }),
205
+ _ts_metadata("design:type", Object)
206
+ ], RoleResponseDto.prototype, "metadata", void 0);
207
+ _ts_decorate([
208
+ (0, _swagger.ApiProperty)(),
209
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
210
+ ], RoleResponseDto.prototype, "createdAt", void 0);
211
+ _ts_decorate([
212
+ (0, _swagger.ApiProperty)(),
213
+ _ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
214
+ ], RoleResponseDto.prototype, "updatedAt", void 0);
215
+ _ts_decorate([
216
+ (0, _swagger.ApiProperty)({
217
+ required: false
218
+ }),
219
+ _ts_metadata("design:type", Object)
220
+ ], RoleResponseDto.prototype, "deletedAt", void 0);
221
+ _ts_decorate([
222
+ (0, _swagger.ApiProperty)({
223
+ required: false
224
+ }),
225
+ _ts_metadata("design:type", Object)
226
+ ], RoleResponseDto.prototype, "createdById", void 0);
227
+ _ts_decorate([
228
+ (0, _swagger.ApiProperty)({
229
+ required: false
230
+ }),
231
+ _ts_metadata("design:type", Object)
232
+ ], RoleResponseDto.prototype, "updatedById", void 0);
233
+ _ts_decorate([
234
+ (0, _swagger.ApiProperty)({
235
+ required: false
236
+ }),
237
+ _ts_metadata("design:type", Object)
238
+ ], RoleResponseDto.prototype, "deletedById", void 0);
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "ActionBase", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return ActionBase;
9
+ }
10
+ });
11
+ const _nestjsshared = require("@flusys/nestjs-shared");
12
+ const _typeorm = require("typeorm");
13
+ const _enums = require("../enums");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
27
+ function _ts_decorate(decorators, target, key, desc) {
28
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30
+ 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;
31
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
32
+ }
33
+ function _ts_metadata(k, v) {
34
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
35
+ }
36
+ let ActionBase = class ActionBase extends _nestjsshared.Identity {
37
+ constructor(...args){
38
+ super(...args), _define_property(this, "readOnly", void 0), _define_property(this, "name", void 0), _define_property(this, "description", void 0), _define_property(this, "code", void 0), _define_property(this, "actionType", void 0), _define_property(this, "permissionLogic", void 0), _define_property(this, "serial", void 0), _define_property(this, "isActive", void 0), _define_property(this, "parent", void 0), _define_property(this, "parentId", void 0), _define_property(this, "children", void 0), _define_property(this, "metadata", void 0);
39
+ }
40
+ };
41
+ _ts_decorate([
42
+ (0, _typeorm.Column)({
43
+ type: 'boolean',
44
+ nullable: false,
45
+ default: false,
46
+ name: 'read_only'
47
+ }),
48
+ _ts_metadata("design:type", Boolean)
49
+ ], ActionBase.prototype, "readOnly", void 0);
50
+ _ts_decorate([
51
+ (0, _typeorm.Column)({
52
+ type: 'varchar',
53
+ length: 255,
54
+ nullable: false
55
+ }),
56
+ _ts_metadata("design:type", String)
57
+ ], ActionBase.prototype, "name", void 0);
58
+ _ts_decorate([
59
+ (0, _typeorm.Column)({
60
+ type: 'varchar',
61
+ length: 500,
62
+ nullable: true
63
+ }),
64
+ _ts_metadata("design:type", Object)
65
+ ], ActionBase.prototype, "description", void 0);
66
+ _ts_decorate([
67
+ (0, _typeorm.Column)({
68
+ type: 'varchar',
69
+ length: 255,
70
+ nullable: true,
71
+ unique: true
72
+ }),
73
+ _ts_metadata("design:type", Object)
74
+ ], ActionBase.prototype, "code", void 0);
75
+ _ts_decorate([
76
+ (0, _typeorm.Column)({
77
+ type: 'enum',
78
+ enum: _enums.ActionType,
79
+ nullable: false,
80
+ default: _enums.ActionType.BACKEND,
81
+ name: 'action_type'
82
+ }),
83
+ _ts_metadata("design:type", typeof _enums.ActionType === "undefined" ? Object : _enums.ActionType)
84
+ ], ActionBase.prototype, "actionType", void 0);
85
+ _ts_decorate([
86
+ (0, _typeorm.Column)('simple-json', {
87
+ nullable: true,
88
+ name: 'permission_logic'
89
+ }),
90
+ _ts_metadata("design:type", Object)
91
+ ], ActionBase.prototype, "permissionLogic", void 0);
92
+ _ts_decorate([
93
+ (0, _typeorm.Column)({
94
+ type: 'int',
95
+ nullable: true
96
+ }),
97
+ _ts_metadata("design:type", Object)
98
+ ], ActionBase.prototype, "serial", void 0);
99
+ _ts_decorate([
100
+ (0, _typeorm.Column)({
101
+ type: 'boolean',
102
+ nullable: false,
103
+ default: true,
104
+ name: 'is_active'
105
+ }),
106
+ _ts_metadata("design:type", Boolean)
107
+ ], ActionBase.prototype, "isActive", void 0);
108
+ _ts_decorate([
109
+ (0, _typeorm.ManyToOne)('Action', 'children', {
110
+ nullable: true,
111
+ onDelete: 'CASCADE'
112
+ }),
113
+ (0, _typeorm.JoinColumn)({
114
+ name: 'parent_id'
115
+ }),
116
+ _ts_metadata("design:type", Object)
117
+ ], ActionBase.prototype, "parent", void 0);
118
+ _ts_decorate([
119
+ (0, _typeorm.Column)({
120
+ type: 'uuid',
121
+ nullable: true,
122
+ name: 'parent_id'
123
+ }),
124
+ _ts_metadata("design:type", Object)
125
+ ], ActionBase.prototype, "parentId", void 0);
126
+ _ts_decorate([
127
+ (0, _typeorm.OneToMany)('Action', 'parent'),
128
+ _ts_metadata("design:type", Array)
129
+ ], ActionBase.prototype, "children", void 0);
130
+ _ts_decorate([
131
+ (0, _typeorm.Column)('simple-json', {
132
+ nullable: true
133
+ }),
134
+ _ts_metadata("design:type", Object)
135
+ ], ActionBase.prototype, "metadata", void 0);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "Action", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Action;
9
+ }
10
+ });
11
+ const _typeorm = require("typeorm");
12
+ const _actionbaseentity = require("./action-base.entity");
13
+ function _ts_decorate(decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ 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;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ }
19
+ let Action = class Action extends _actionbaseentity.ActionBase {
20
+ };
21
+ Action = _ts_decorate([
22
+ (0, _typeorm.Entity)({
23
+ name: 'action'
24
+ }),
25
+ (0, _typeorm.Index)([
26
+ 'parentId'
27
+ ])
28
+ ], Action);
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get IAMAllEntities () {
13
+ return IAMAllEntities;
14
+ },
15
+ get IAMCompanyEntities () {
16
+ return IAMCompanyEntities;
17
+ },
18
+ get IAMCoreEntities () {
19
+ return IAMCoreEntities;
20
+ },
21
+ get getIAMEntitiesByConfig () {
22
+ return getIAMEntitiesByConfig;
23
+ }
24
+ });
25
+ _export_star(require("./action-base.entity"), exports);
26
+ const _actionentity = _export_star(require("./action.entity"), exports);
27
+ _export_star(require("./permission-base.entity"), exports);
28
+ const _permissionwithcompanyentity = _export_star(require("./permission-with-company.entity"), exports);
29
+ _export_star(require("./role-base.entity"), exports);
30
+ const _rolewithcompanyentity = _export_star(require("./role-with-company.entity"), exports);
31
+ const _roleentity = _export_star(require("./role.entity"), exports);
32
+ const _useriampermissionentity = _export_star(require("./user-iam-permission.entity"), exports);
33
+ function _export_star(from, to) {
34
+ Object.keys(from).forEach(function(k) {
35
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
36
+ Object.defineProperty(to, k, {
37
+ enumerable: true,
38
+ get: function() {
39
+ return from[k];
40
+ }
41
+ });
42
+ }
43
+ });
44
+ return from;
45
+ }
46
+ const IAMCoreEntities = [
47
+ _actionentity.Action,
48
+ _roleentity.Role,
49
+ _useriampermissionentity.UserIamPermission
50
+ ];
51
+ const IAMCompanyEntities = [
52
+ _rolewithcompanyentity.RoleWithCompany,
53
+ _permissionwithcompanyentity.UserIamPermissionWithCompany
54
+ ];
55
+ const IAMAllEntities = [
56
+ _actionentity.Action,
57
+ _roleentity.Role,
58
+ _rolewithcompanyentity.RoleWithCompany,
59
+ _useriampermissionentity.UserIamPermission,
60
+ _permissionwithcompanyentity.UserIamPermissionWithCompany
61
+ ];
62
+ function getIAMEntitiesByConfig(enableCompanyFeature, permissionMode = 'FULL') {
63
+ const entities = [
64
+ _actionentity.Action
65
+ ];
66
+ // Permission entity - always included
67
+ if (enableCompanyFeature) {
68
+ entities.push(_permissionwithcompanyentity.UserIamPermissionWithCompany);
69
+ } else {
70
+ entities.push(_useriampermissionentity.UserIamPermission);
71
+ }
72
+ // Role entity - Only for RBAC or FULL mode (not DIRECT)
73
+ if (permissionMode === 'RBAC' || permissionMode === 'FULL') {
74
+ if (enableCompanyFeature) {
75
+ entities.push(_rolewithcompanyentity.RoleWithCompany);
76
+ } else {
77
+ entities.push(_roleentity.Role);
78
+ }
79
+ }
80
+ return entities;
81
+ }
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get IamEntityType () {
13
+ return IamEntityType;
14
+ },
15
+ get IamPermissionType () {
16
+ return IamPermissionType;
17
+ },
18
+ get PermissionBase () {
19
+ return PermissionBase;
20
+ }
21
+ });
22
+ const _nestjsshared = require("@flusys/nestjs-shared");
23
+ const _typeorm = require("typeorm");
24
+ function _define_property(obj, key, value) {
25
+ if (key in obj) {
26
+ Object.defineProperty(obj, key, {
27
+ value: value,
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true
31
+ });
32
+ } else {
33
+ obj[key] = value;
34
+ }
35
+ return obj;
36
+ }
37
+ function _ts_decorate(decorators, target, key, desc) {
38
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40
+ 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;
41
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
42
+ }
43
+ function _ts_metadata(k, v) {
44
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
45
+ }
46
+ var IamPermissionType = /*#__PURE__*/ function(IamPermissionType) {
47
+ IamPermissionType["USER_ROLE"] = "user_role";
48
+ IamPermissionType["ROLE_ACTION"] = "role_action";
49
+ IamPermissionType["USER_ACTION"] = "user_action";
50
+ IamPermissionType["COMPANY_ACTION"] = "company_action";
51
+ return IamPermissionType;
52
+ }({});
53
+ var IamEntityType = /*#__PURE__*/ function(IamEntityType) {
54
+ IamEntityType["USER"] = "user";
55
+ IamEntityType["ROLE"] = "role";
56
+ IamEntityType["ACTION"] = "action";
57
+ IamEntityType["COMPANY"] = "company";
58
+ return IamEntityType;
59
+ }({});
60
+ let PermissionBase = class PermissionBase extends _nestjsshared.Identity {
61
+ isUserRole() {
62
+ return this.permissionType === "user_role";
63
+ }
64
+ isRoleAction() {
65
+ return this.permissionType === "role_action";
66
+ }
67
+ isUserAction() {
68
+ return this.permissionType === "user_action";
69
+ }
70
+ isCompanyAction() {
71
+ return this.permissionType === "company_action";
72
+ }
73
+ isValid(now = new Date()) {
74
+ if (this.validFrom && now < this.validFrom) return false;
75
+ if (this.validUntil && now > this.validUntil) return false;
76
+ return true;
77
+ }
78
+ constructor(...args){
79
+ super(...args), _define_property(this, "permissionType", void 0), _define_property(this, "sourceType", void 0), _define_property(this, "sourceId", void 0), _define_property(this, "targetType", void 0), _define_property(this, "targetId", void 0), _define_property(this, "userId", void 0), _define_property(this, "validFrom", void 0), _define_property(this, "validUntil", void 0), _define_property(this, "reason", void 0), _define_property(this, "metadata", void 0);
80
+ }
81
+ };
82
+ _ts_decorate([
83
+ (0, _typeorm.Column)({
84
+ type: 'enum',
85
+ enum: IamPermissionType,
86
+ name: 'permission_type'
87
+ }),
88
+ _ts_metadata("design:type", String)
89
+ ], PermissionBase.prototype, "permissionType", void 0);
90
+ _ts_decorate([
91
+ (0, _typeorm.Column)({
92
+ type: 'enum',
93
+ enum: IamEntityType,
94
+ name: 'source_type'
95
+ }),
96
+ _ts_metadata("design:type", String)
97
+ ], PermissionBase.prototype, "sourceType", void 0);
98
+ _ts_decorate([
99
+ (0, _typeorm.Column)({
100
+ type: 'uuid',
101
+ name: 'source_id'
102
+ }),
103
+ _ts_metadata("design:type", String)
104
+ ], PermissionBase.prototype, "sourceId", void 0);
105
+ _ts_decorate([
106
+ (0, _typeorm.Column)({
107
+ type: 'enum',
108
+ enum: IamEntityType,
109
+ name: 'target_type'
110
+ }),
111
+ _ts_metadata("design:type", String)
112
+ ], PermissionBase.prototype, "targetType", void 0);
113
+ _ts_decorate([
114
+ (0, _typeorm.Column)({
115
+ type: 'uuid',
116
+ name: 'target_id'
117
+ }),
118
+ _ts_metadata("design:type", String)
119
+ ], PermissionBase.prototype, "targetId", void 0);
120
+ _ts_decorate([
121
+ (0, _typeorm.Column)({
122
+ type: 'uuid',
123
+ nullable: true,
124
+ name: 'user_id'
125
+ }),
126
+ _ts_metadata("design:type", Object)
127
+ ], PermissionBase.prototype, "userId", void 0);
128
+ _ts_decorate([
129
+ (0, _typeorm.Column)({
130
+ type: 'timestamp',
131
+ nullable: true,
132
+ name: 'valid_from'
133
+ }),
134
+ _ts_metadata("design:type", Object)
135
+ ], PermissionBase.prototype, "validFrom", void 0);
136
+ _ts_decorate([
137
+ (0, _typeorm.Column)({
138
+ type: 'timestamp',
139
+ nullable: true,
140
+ name: 'valid_until'
141
+ }),
142
+ _ts_metadata("design:type", Object)
143
+ ], PermissionBase.prototype, "validUntil", void 0);
144
+ _ts_decorate([
145
+ (0, _typeorm.Column)({
146
+ type: 'text',
147
+ nullable: true
148
+ }),
149
+ _ts_metadata("design:type", Object)
150
+ ], PermissionBase.prototype, "reason", void 0);
151
+ _ts_decorate([
152
+ (0, _typeorm.Column)('simple-json', {
153
+ nullable: true
154
+ }),
155
+ _ts_metadata("design:type", Object)
156
+ ], PermissionBase.prototype, "metadata", void 0);