@flusys/nestjs-iam 7.1.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/config/index.d.ts +3 -3
  2. package/config/message-keys.d.ts +2 -0
  3. package/controllers/action.controller.d.ts +4 -4
  4. package/controllers/company-action-permission.controller.d.ts +2 -2
  5. package/controllers/index.d.ts +6 -6
  6. package/controllers/my-permission.controller.d.ts +3 -3
  7. package/controllers/role-permission.controller.d.ts +5 -4
  8. package/controllers/role.controller.d.ts +2 -2
  9. package/controllers/user-action-permission.controller.d.ts +5 -4
  10. package/docs/iam-swagger.config.d.ts +2 -2
  11. package/docs/index.d.ts +1 -1
  12. package/dtos/action.dto.d.ts +2 -2
  13. package/dtos/index.d.ts +3 -3
  14. package/dtos/permission.dto.d.ts +16 -0
  15. package/entities/action.entity.d.ts +2 -2
  16. package/entities/index.d.ts +11 -11
  17. package/entities/permission-with-company.entity.d.ts +1 -1
  18. package/entities/role-with-company.entity.d.ts +1 -1
  19. package/entities/role.entity.d.ts +1 -1
  20. package/entities/user-iam-permission.entity.d.ts +1 -1
  21. package/enums/index.d.ts +4 -4
  22. package/fesm/284.js +1316 -0
  23. package/fesm/867.js +3801 -0
  24. package/fesm/chunks/364.js +86 -0
  25. package/fesm/config/index.js +135 -3
  26. package/fesm/controllers/index.js +18 -7
  27. package/fesm/docs/index.js +240 -1
  28. package/fesm/dtos/index.js +1168 -3
  29. package/fesm/entities/index.js +670 -31
  30. package/fesm/enums/index.js +97 -4
  31. package/fesm/helpers/index.js +125 -2
  32. package/fesm/index.js +818 -11
  33. package/fesm/interfaces/index.js +17 -3
  34. package/fesm/modules/index.js +259 -1
  35. package/fesm/runtime.js +134 -0
  36. package/fesm/services/index.js +43 -6
  37. package/fesm/types/index.js +15 -1
  38. package/helpers/company-access.helper.d.ts +2 -2
  39. package/helpers/index.d.ts +2 -2
  40. package/helpers/permission-mode.helper.d.ts +1 -1
  41. package/index.d.ts +11 -11
  42. package/interfaces/action.interface.d.ts +2 -2
  43. package/interfaces/iam-module-options.interface.d.ts +3 -3
  44. package/interfaces/index.d.ts +3 -3
  45. package/modules/iam.module.d.ts +2 -2
  46. package/modules/index.d.ts +1 -1
  47. package/package.json +30 -37
  48. package/services/action.service.d.ts +9 -9
  49. package/services/iam-config.service.d.ts +4 -4
  50. package/services/iam-datasource.service.d.ts +3 -3
  51. package/services/index.d.ts +6 -6
  52. package/services/permission-cache.service.d.ts +5 -5
  53. package/services/permission.service.d.ts +6 -4
  54. package/services/role.service.d.ts +8 -8
  55. package/types/index.d.ts +1 -1
  56. package/cjs/config/event-actions.js +0 -36
  57. package/cjs/config/iam.constants.js +0 -11
  58. package/cjs/config/index.js +0 -20
  59. package/cjs/config/message-keys.js +0 -71
  60. package/cjs/controllers/action.controller.js +0 -174
  61. package/cjs/controllers/action.controller.spec.js +0 -79
  62. package/cjs/controllers/company-action-permission.controller.js +0 -119
  63. package/cjs/controllers/company-action-permission.controller.spec.js +0 -65
  64. package/cjs/controllers/index.js +0 -23
  65. package/cjs/controllers/my-permission.controller.js +0 -147
  66. package/cjs/controllers/my-permission.controller.spec.js +0 -128
  67. package/cjs/controllers/role-permission.controller.js +0 -191
  68. package/cjs/controllers/role-permission.controller.spec.js +0 -140
  69. package/cjs/controllers/role.controller.js +0 -102
  70. package/cjs/controllers/role.controller.spec.js +0 -86
  71. package/cjs/controllers/user-action-permission.controller.js +0 -129
  72. package/cjs/controllers/user-action-permission.controller.spec.js +0 -68
  73. package/cjs/docs/iam-swagger.config.js +0 -209
  74. package/cjs/docs/iam-swagger.config.spec.js +0 -99
  75. package/cjs/docs/index.js +0 -18
  76. package/cjs/dtos/action.dto.js +0 -282
  77. package/cjs/dtos/index.js +0 -21
  78. package/cjs/dtos/permission.dto.js +0 -637
  79. package/cjs/dtos/role.dto.js +0 -155
  80. package/cjs/entities/action.entity.js +0 -138
  81. package/cjs/entities/index.js +0 -80
  82. package/cjs/entities/index.spec.js +0 -56
  83. package/cjs/entities/permission-base.entity.js +0 -107
  84. package/cjs/entities/permission-with-company.entity.js +0 -100
  85. package/cjs/entities/role-base.entity.js +0 -80
  86. package/cjs/entities/role-with-company.entity.js +0 -55
  87. package/cjs/entities/role.entity.js +0 -25
  88. package/cjs/entities/user-iam-permission.entity.js +0 -43
  89. package/cjs/enums/action-type.enum.js +0 -22
  90. package/cjs/enums/iam-entity-type.enum.js +0 -17
  91. package/cjs/enums/iam-permission-type.enum.js +0 -17
  92. package/cjs/enums/index.js +0 -21
  93. package/cjs/enums/permission-type.enum.js +0 -16
  94. package/cjs/helpers/company-access.helper.js +0 -23
  95. package/cjs/helpers/company-access.helper.spec.js +0 -68
  96. package/cjs/helpers/index.js +0 -19
  97. package/cjs/helpers/permission-mode.helper.js +0 -49
  98. package/cjs/helpers/permission-mode.helper.spec.js +0 -54
  99. package/cjs/index.js +0 -28
  100. package/cjs/interfaces/action.interface.js +0 -4
  101. package/cjs/interfaces/iam-module-options.interface.js +0 -4
  102. package/cjs/interfaces/index.js +0 -20
  103. package/cjs/interfaces/role.interface.js +0 -7
  104. package/cjs/modules/iam.module.js +0 -186
  105. package/cjs/modules/iam.module.spec.js +0 -282
  106. package/cjs/modules/index.js +0 -18
  107. package/cjs/services/action.service.js +0 -337
  108. package/cjs/services/action.service.spec.js +0 -351
  109. package/cjs/services/iam-config.service.js +0 -87
  110. package/cjs/services/iam-config.service.spec.js +0 -110
  111. package/cjs/services/iam-datasource.service.js +0 -129
  112. package/cjs/services/iam-datasource.service.spec.js +0 -110
  113. package/cjs/services/index.js +0 -23
  114. package/cjs/services/permission-cache.service.js +0 -544
  115. package/cjs/services/permission-cache.service.spec.js +0 -718
  116. package/cjs/services/permission.service.js +0 -914
  117. package/cjs/services/permission.service.spec.js +0 -918
  118. package/cjs/services/role.service.js +0 -224
  119. package/cjs/services/role.service.spec.js +0 -347
  120. package/cjs/types/index.js +0 -18
  121. package/cjs/types/logic-node.type.js +0 -30
  122. package/fesm/config/event-actions.js +0 -15
  123. package/fesm/config/iam.constants.js +0 -1
  124. package/fesm/config/message-keys.js +0 -35
  125. package/fesm/controllers/action.controller.js +0 -164
  126. package/fesm/controllers/action.controller.spec.js +0 -75
  127. package/fesm/controllers/company-action-permission.controller.js +0 -109
  128. package/fesm/controllers/company-action-permission.controller.spec.js +0 -61
  129. package/fesm/controllers/my-permission.controller.js +0 -137
  130. package/fesm/controllers/my-permission.controller.spec.js +0 -124
  131. package/fesm/controllers/role-permission.controller.js +0 -181
  132. package/fesm/controllers/role-permission.controller.spec.js +0 -136
  133. package/fesm/controllers/role.controller.js +0 -92
  134. package/fesm/controllers/role.controller.spec.js +0 -82
  135. package/fesm/controllers/user-action-permission.controller.js +0 -119
  136. package/fesm/controllers/user-action-permission.controller.spec.js +0 -64
  137. package/fesm/docs/iam-swagger.config.js +0 -199
  138. package/fesm/docs/iam-swagger.config.spec.js +0 -95
  139. package/fesm/dtos/action.dto.js +0 -252
  140. package/fesm/dtos/permission.dto.js +0 -571
  141. package/fesm/dtos/role.dto.js +0 -134
  142. package/fesm/entities/action.entity.js +0 -128
  143. package/fesm/entities/index.spec.js +0 -52
  144. package/fesm/entities/permission-base.entity.js +0 -100
  145. package/fesm/entities/permission-with-company.entity.js +0 -90
  146. package/fesm/entities/role-base.entity.js +0 -70
  147. package/fesm/entities/role-with-company.entity.js +0 -45
  148. package/fesm/entities/role.entity.js +0 -15
  149. package/fesm/entities/user-iam-permission.entity.js +0 -33
  150. package/fesm/enums/action-type.enum.js +0 -12
  151. package/fesm/enums/iam-entity-type.enum.js +0 -7
  152. package/fesm/enums/iam-permission-type.enum.js +0 -7
  153. package/fesm/enums/permission-type.enum.js +0 -6
  154. package/fesm/helpers/company-access.helper.js +0 -18
  155. package/fesm/helpers/company-access.helper.spec.js +0 -64
  156. package/fesm/helpers/permission-mode.helper.js +0 -49
  157. package/fesm/helpers/permission-mode.helper.spec.js +0 -50
  158. package/fesm/interfaces/action.interface.js +0 -3
  159. package/fesm/interfaces/iam-module-options.interface.js +0 -3
  160. package/fesm/interfaces/role.interface.js +0 -4
  161. package/fesm/modules/iam.module.js +0 -176
  162. package/fesm/modules/iam.module.spec.js +0 -278
  163. package/fesm/services/action.service.js +0 -327
  164. package/fesm/services/action.service.spec.js +0 -347
  165. package/fesm/services/iam-config.service.js +0 -77
  166. package/fesm/services/iam-config.service.spec.js +0 -106
  167. package/fesm/services/iam-datasource.service.js +0 -78
  168. package/fesm/services/iam-datasource.service.spec.js +0 -106
  169. package/fesm/services/permission-cache.service.js +0 -527
  170. package/fesm/services/permission-cache.service.spec.js +0 -714
  171. package/fesm/services/permission.service.js +0 -904
  172. package/fesm/services/permission.service.spec.js +0 -914
  173. package/fesm/services/role.service.js +0 -214
  174. package/fesm/services/role.service.spec.js +0 -343
  175. package/fesm/types/logic-node.type.js +0 -27
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "IAMConfigService", {
6
- enumerable: true,
7
- get: function() {
8
- return IAMConfigService;
9
- }
10
- });
11
- const _common = require("@nestjs/common");
12
- const _iamconstants = require("../config/iam.constants");
13
- const _permissiontypeenum = require("../enums/permission-type.enum");
14
- const _helpers = require("../helpers");
15
- const _iammoduleoptionsinterface = require("../interfaces/iam-module-options.interface");
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 IAMConfigService = class IAMConfigService {
44
- // Database Mode
45
- getDatabaseMode() {
46
- return this.options.bootstrapAppConfig?.databaseMode ?? 'single';
47
- }
48
- isMultiTenant() {
49
- return this.getDatabaseMode() === 'multi-tenant';
50
- }
51
- // Feature Flags
52
- isCompanyFeatureEnabled() {
53
- return this.options.bootstrapAppConfig?.enableCompanyFeature ?? false;
54
- }
55
- // Permission Mode
56
- getPermissionMode() {
57
- return _helpers.PermissionModeHelper.fromString(this.options.bootstrapAppConfig?.permissionMode);
58
- }
59
- isRbacEnabled() {
60
- const mode = this.getPermissionMode();
61
- return mode === _permissiontypeenum.IAMPermissionMode.RBAC || mode === _permissiontypeenum.IAMPermissionMode.FULL;
62
- }
63
- isDirectPermissionEnabled() {
64
- const mode = this.getPermissionMode();
65
- return mode === _permissiontypeenum.IAMPermissionMode.DIRECT || mode === _permissiontypeenum.IAMPermissionMode.FULL;
66
- }
67
- // Options
68
- getOptions() {
69
- return this.options;
70
- }
71
- constructor(injectedOptions){
72
- _define_property(this, "options", void 0);
73
- this.options = injectedOptions ?? {
74
- global: false,
75
- includeController: false
76
- };
77
- }
78
- };
79
- IAMConfigService = _ts_decorate([
80
- (0, _common.Injectable)(),
81
- _ts_param(0, (0, _common.Optional)()),
82
- _ts_param(0, (0, _common.Inject)(_iamconstants.IAM_MODULE_OPTIONS)),
83
- _ts_metadata("design:type", Function),
84
- _ts_metadata("design:paramtypes", [
85
- typeof _iammoduleoptionsinterface.IAMModuleOptions === "undefined" ? Object : _iammoduleoptionsinterface.IAMModuleOptions
86
- ])
87
- ], IAMConfigService);
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _permissiontypeenum = require("../enums/permission-type.enum");
6
- const _iamconfigservice = require("./iam-config.service");
7
- describe('IAMConfigService', ()=>{
8
- describe('with no injected options (defaults)', ()=>{
9
- let service;
10
- beforeEach(()=>{
11
- service = new _iamconfigservice.IAMConfigService();
12
- });
13
- it('defaults to single database mode', ()=>{
14
- expect(service.getDatabaseMode()).toBe('single');
15
- expect(service.isMultiTenant()).toBe(false);
16
- });
17
- it('defaults company feature to disabled', ()=>{
18
- expect(service.isCompanyFeatureEnabled()).toBe(false);
19
- });
20
- it('defaults permission mode to FULL', ()=>{
21
- expect(service.getPermissionMode()).toBe(_permissiontypeenum.IAMPermissionMode.FULL);
22
- expect(service.isRbacEnabled()).toBe(true);
23
- expect(service.isDirectPermissionEnabled()).toBe(true);
24
- });
25
- it('returns the fallback options object from getOptions', ()=>{
26
- expect(service.getOptions()).toEqual({
27
- global: false,
28
- includeController: false
29
- });
30
- });
31
- });
32
- describe('with injected options', ()=>{
33
- function buildService(overrides) {
34
- const options = {
35
- global: false,
36
- includeController: false,
37
- bootstrapAppConfig: {
38
- databaseMode: 'single',
39
- enableCompanyFeature: false,
40
- ...overrides
41
- }
42
- };
43
- return new _iamconfigservice.IAMConfigService(options);
44
- }
45
- it('reports multi-tenant mode when configured', ()=>{
46
- const service = buildService({
47
- databaseMode: 'multi-tenant'
48
- });
49
- expect(service.getDatabaseMode()).toBe('multi-tenant');
50
- expect(service.isMultiTenant()).toBe(true);
51
- });
52
- it('reports company feature enabled when configured', ()=>{
53
- const service = buildService({
54
- enableCompanyFeature: true
55
- });
56
- expect(service.isCompanyFeatureEnabled()).toBe(true);
57
- });
58
- describe('permission mode: RBAC', ()=>{
59
- let service;
60
- beforeEach(()=>{
61
- service = buildService({
62
- permissionMode: 'RBAC'
63
- });
64
- });
65
- it('enables RBAC but not direct permissions', ()=>{
66
- expect(service.getPermissionMode()).toBe(_permissiontypeenum.IAMPermissionMode.RBAC);
67
- expect(service.isRbacEnabled()).toBe(true);
68
- expect(service.isDirectPermissionEnabled()).toBe(false);
69
- });
70
- });
71
- describe('permission mode: DIRECT', ()=>{
72
- let service;
73
- beforeEach(()=>{
74
- service = buildService({
75
- permissionMode: 'DIRECT'
76
- });
77
- });
78
- it('enables direct permissions but not RBAC', ()=>{
79
- expect(service.getPermissionMode()).toBe(_permissiontypeenum.IAMPermissionMode.DIRECT);
80
- expect(service.isRbacEnabled()).toBe(false);
81
- expect(service.isDirectPermissionEnabled()).toBe(true);
82
- });
83
- });
84
- describe('permission mode: FULL', ()=>{
85
- let service;
86
- beforeEach(()=>{
87
- service = buildService({
88
- permissionMode: 'FULL'
89
- });
90
- });
91
- it('enables both RBAC and direct permissions', ()=>{
92
- expect(service.getPermissionMode()).toBe(_permissiontypeenum.IAMPermissionMode.FULL);
93
- expect(service.isRbacEnabled()).toBe(true);
94
- expect(service.isDirectPermissionEnabled()).toBe(true);
95
- });
96
- });
97
- it('returns the exact injected options object from getOptions', ()=>{
98
- const options = {
99
- global: true,
100
- includeController: true,
101
- bootstrapAppConfig: {
102
- databaseMode: 'single',
103
- enableCompanyFeature: true
104
- }
105
- };
106
- const service = new _iamconfigservice.IAMConfigService(options);
107
- expect(service.getOptions()).toBe(options);
108
- });
109
- });
110
- });
@@ -1,129 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "IAMDataSourceService", {
6
- enumerable: true,
7
- get: function() {
8
- return IAMDataSourceService;
9
- }
10
- });
11
- const _modules = require("@flusys/nestjs-shared/modules");
12
- const _common = require("@nestjs/common");
13
- const _core = require("@nestjs/core");
14
- const _express = require("express");
15
- const _helpers = require("../helpers");
16
- const _iamconfigservice = require("./iam-config.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 _getRequireWildcardCache(nodeInterop) {
31
- if (typeof WeakMap !== "function") return null;
32
- var cacheBabelInterop = new WeakMap();
33
- var cacheNodeInterop = new WeakMap();
34
- return (_getRequireWildcardCache = function(nodeInterop) {
35
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
36
- })(nodeInterop);
37
- }
38
- function _interop_require_wildcard(obj, nodeInterop) {
39
- if (!nodeInterop && obj && obj.__esModule) {
40
- return obj;
41
- }
42
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
43
- return {
44
- default: obj
45
- };
46
- }
47
- var cache = _getRequireWildcardCache(nodeInterop);
48
- if (cache && cache.has(obj)) {
49
- return cache.get(obj);
50
- }
51
- var newObj = {
52
- __proto__: null
53
- };
54
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
55
- for(var key in obj){
56
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
57
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
58
- if (desc && (desc.get || desc.set)) {
59
- Object.defineProperty(newObj, key, desc);
60
- } else {
61
- newObj[key] = obj[key];
62
- }
63
- }
64
- }
65
- newObj.default = obj;
66
- if (cache) {
67
- cache.set(obj, newObj);
68
- }
69
- return newObj;
70
- }
71
- function _ts_decorate(decorators, target, key, desc) {
72
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
73
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
74
- 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;
75
- return c > 3 && r && Object.defineProperty(target, key, r), r;
76
- }
77
- function _ts_metadata(k, v) {
78
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
79
- }
80
- function _ts_param(paramIndex, decorator) {
81
- return function(target, key) {
82
- decorator(target, key, paramIndex);
83
- };
84
- }
85
- let IAMDataSourceService = class IAMDataSourceService extends _modules.MultiTenantDataSourceService {
86
- static buildParentOptions(options) {
87
- return {
88
- bootstrapAppConfig: options.bootstrapAppConfig,
89
- defaultDatabaseConfig: options.config?.defaultDatabaseConfig,
90
- tenantDefaultDatabaseConfig: options.config?.tenantDefaultDatabaseConfig,
91
- tenants: options.config?.tenants
92
- };
93
- }
94
- getEnableCompanyFeatureForTenant(tenant) {
95
- return tenant?.enableCompanyFeature ?? this.configService.isCompanyFeatureEnabled();
96
- }
97
- async getIAMEntities() {
98
- const { getIAMEntitiesByConfig } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../entities")));
99
- const enableCompanyFeature = this.getEnableCompanyFeatureForTenant(this.getCurrentTenant() ?? undefined);
100
- const permissionMode = _helpers.PermissionModeHelper.toString(this.configService.getPermissionMode());
101
- return getIAMEntitiesByConfig(enableCompanyFeature, permissionMode);
102
- }
103
- async createDataSourceFromConfig(config) {
104
- const entities = await this.getIAMEntities();
105
- return await super.createDataSourceFromConfig(config, entities);
106
- }
107
- constructor(configService, request){
108
- super(IAMDataSourceService.buildParentOptions(configService.getOptions()), request), _define_property(this, "configService", void 0), this.configService = configService;
109
- }
110
- };
111
- _define_property(IAMDataSourceService, "tenantConnections", new Map());
112
- _define_property(IAMDataSourceService, "singleDataSource", null);
113
- _define_property(IAMDataSourceService, "tenantsRegistry", new Map());
114
- _define_property(IAMDataSourceService, "initialized", false);
115
- _define_property(IAMDataSourceService, "connectionLocks", new Map());
116
- _define_property(IAMDataSourceService, "singleConnectionLock", null);
117
- IAMDataSourceService = _ts_decorate([
118
- (0, _common.Injectable)({
119
- scope: _common.Scope.REQUEST
120
- }),
121
- _ts_param(0, (0, _common.Inject)(_iamconfigservice.IAMConfigService)),
122
- _ts_param(1, (0, _common.Optional)()),
123
- _ts_param(1, (0, _common.Inject)(_core.REQUEST)),
124
- _ts_metadata("design:type", Function),
125
- _ts_metadata("design:paramtypes", [
126
- typeof _iamconfigservice.IAMConfigService === "undefined" ? Object : _iamconfigservice.IAMConfigService,
127
- typeof _express.Request === "undefined" ? Object : _express.Request
128
- ])
129
- ], IAMDataSourceService);
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _modules = require("@flusys/nestjs-shared/modules");
6
- const _actionentity = require("../entities/action.entity");
7
- const _useriampermissionentity = require("../entities/user-iam-permission.entity");
8
- const _permissionwithcompanyentity = require("../entities/permission-with-company.entity");
9
- const _roleentity = require("../entities/role.entity");
10
- const _rolewithcompanyentity = require("../entities/role-with-company.entity");
11
- const _iamdatasourceservice = require("./iam-datasource.service");
12
- describe('IAMDataSourceService', ()=>{
13
- let mockConfigService;
14
- beforeEach(()=>{
15
- mockConfigService = {
16
- isCompanyFeatureEnabled: jest.fn().mockReturnValue(false),
17
- getPermissionMode: jest.fn(),
18
- getOptions: jest.fn().mockReturnValue({
19
- global: false,
20
- includeController: false
21
- })
22
- };
23
- });
24
- function buildService(request) {
25
- return new _iamdatasourceservice.IAMDataSourceService(mockConfigService, request);
26
- }
27
- describe('getEnableCompanyFeatureForTenant', ()=>{
28
- it('uses the tenant override when defined (true)', ()=>{
29
- const service = buildService();
30
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(false);
31
- expect(service.getEnableCompanyFeatureForTenant({
32
- enableCompanyFeature: true
33
- })).toBe(true);
34
- });
35
- it('uses the tenant override when defined (false)', ()=>{
36
- const service = buildService();
37
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(true);
38
- expect(service.getEnableCompanyFeatureForTenant({
39
- enableCompanyFeature: false
40
- })).toBe(false);
41
- });
42
- it('falls back to the config service when the tenant has no override', ()=>{
43
- const service = buildService();
44
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(true);
45
- expect(service.getEnableCompanyFeatureForTenant({})).toBe(true);
46
- });
47
- it('falls back to the config service when no tenant is provided', ()=>{
48
- const service = buildService();
49
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(true);
50
- expect(service.getEnableCompanyFeatureForTenant(undefined)).toBe(true);
51
- });
52
- });
53
- describe('getIAMEntities', ()=>{
54
- it('returns Action + non-company permission + role entities for RBAC mode', async ()=>{
55
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(false);
56
- mockConfigService.getPermissionMode.mockReturnValue(1); // RBAC
57
- const service = buildService();
58
- const entities = await service.getIAMEntities();
59
- expect(entities).toContain(_actionentity.Action);
60
- expect(entities).toContain(_useriampermissionentity.UserIamPermission);
61
- expect(entities).toContain(_roleentity.Role);
62
- expect(entities).not.toContain(_permissionwithcompanyentity.UserIamPermissionWithCompany);
63
- expect(entities).not.toContain(_rolewithcompanyentity.RoleWithCompany);
64
- });
65
- it('returns company-scoped entities when company feature is enabled', async ()=>{
66
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(true);
67
- mockConfigService.getPermissionMode.mockReturnValue(3); // FULL
68
- const service = buildService();
69
- const entities = await service.getIAMEntities();
70
- expect(entities).toContain(_actionentity.Action);
71
- expect(entities).toContain(_permissionwithcompanyentity.UserIamPermissionWithCompany);
72
- expect(entities).toContain(_rolewithcompanyentity.RoleWithCompany);
73
- expect(entities).not.toContain(_useriampermissionentity.UserIamPermission);
74
- expect(entities).not.toContain(_roleentity.Role);
75
- });
76
- it('excludes role entities entirely in DIRECT mode', async ()=>{
77
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(false);
78
- mockConfigService.getPermissionMode.mockReturnValue(2); // DIRECT
79
- const service = buildService();
80
- const entities = await service.getIAMEntities();
81
- expect(entities).toEqual([
82
- _actionentity.Action,
83
- _useriampermissionentity.UserIamPermission
84
- ]);
85
- });
86
- });
87
- describe('createDataSourceFromConfig', ()=>{
88
- it('resolves IAM entities and delegates to the parent with them', async ()=>{
89
- mockConfigService.isCompanyFeatureEnabled.mockReturnValue(false);
90
- mockConfigService.getPermissionMode.mockReturnValue(1); // RBAC
91
- const service = buildService();
92
- const fakeDataSource = {
93
- isInitialized: true
94
- };
95
- const parentSpy = jest.spyOn(_modules.MultiTenantDataSourceService.prototype, 'createDataSourceFromConfig').mockResolvedValue(fakeDataSource);
96
- const config = {
97
- type: 'mysql',
98
- host: 'localhost'
99
- };
100
- const result = await service.createDataSourceFromConfig(config);
101
- expect(result).toBe(fakeDataSource);
102
- expect(parentSpy).toHaveBeenCalledWith(config, [
103
- _actionentity.Action,
104
- _useriampermissionentity.UserIamPermission,
105
- _roleentity.Role
106
- ]);
107
- parentSpy.mockRestore();
108
- });
109
- });
110
- });
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./action.service"), exports);
6
- _export_star(require("./iam-config.service"), exports);
7
- _export_star(require("./iam-datasource.service"), exports);
8
- _export_star(require("./permission-cache.service"), exports);
9
- _export_star(require("./permission.service"), exports);
10
- _export_star(require("./role.service"), 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
- }