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

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