@webiny/tenant-manager 6.3.0-beta.4 → 6.4.0-beta.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/TenantManager.js +8 -9
  2. package/TenantManager.js.map +1 -1
  3. package/admin/CurrentTenant/CurrentTenant.js +15 -24
  4. package/admin/CurrentTenant/CurrentTenant.js.map +1 -1
  5. package/admin/CurrentTenant/CurrentTenantGateway.js +18 -19
  6. package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -1
  7. package/admin/CurrentTenant/CurrentTenantPresenter.js +26 -23
  8. package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -1
  9. package/admin/CurrentTenant/CurrentTenantRepository.js +30 -29
  10. package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -1
  11. package/admin/CurrentTenant/abstractions.js +4 -12
  12. package/admin/CurrentTenant/abstractions.js.map +1 -1
  13. package/admin/CurrentTenant/feature.js +15 -14
  14. package/admin/CurrentTenant/feature.js.map +1 -1
  15. package/admin/CurrentTenant/useCurrentTenant.js +11 -16
  16. package/admin/CurrentTenant/useCurrentTenant.js.map +1 -1
  17. package/admin/CurrentTenantProvider.js +5 -8
  18. package/admin/CurrentTenantProvider.js.map +1 -1
  19. package/admin/DisableTenant/DisableTenantGateway.js +21 -22
  20. package/admin/DisableTenant/DisableTenantGateway.js.map +1 -1
  21. package/admin/DisableTenant/DisableTenantRepository.js +13 -10
  22. package/admin/DisableTenant/DisableTenantRepository.js.map +1 -1
  23. package/admin/DisableTenant/DisableTenantUseCase.js +13 -10
  24. package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -1
  25. package/admin/DisableTenant/abstractions.js +4 -12
  26. package/admin/DisableTenant/abstractions.js.map +1 -1
  27. package/admin/DisableTenant/feature.js +15 -14
  28. package/admin/DisableTenant/feature.js.map +1 -1
  29. package/admin/DisableTenant/index.js +0 -2
  30. package/admin/DisableTenant/useDisableTenant.js +20 -20
  31. package/admin/DisableTenant/useDisableTenant.js.map +1 -1
  32. package/admin/EnableTenant/EnableTenantGateway.js +21 -22
  33. package/admin/EnableTenant/EnableTenantGateway.js.map +1 -1
  34. package/admin/EnableTenant/EnableTenantRepository.js +13 -10
  35. package/admin/EnableTenant/EnableTenantRepository.js.map +1 -1
  36. package/admin/EnableTenant/EnableTenantUseCase.js +13 -10
  37. package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -1
  38. package/admin/EnableTenant/abstractions.js +4 -12
  39. package/admin/EnableTenant/abstractions.js.map +1 -1
  40. package/admin/EnableTenant/feature.js +15 -14
  41. package/admin/EnableTenant/feature.js.map +1 -1
  42. package/admin/EnableTenant/index.js +0 -2
  43. package/admin/EnableTenant/useEnableTenant.js +19 -18
  44. package/admin/EnableTenant/useEnableTenant.js.map +1 -1
  45. package/admin/Extension.js +32 -36
  46. package/admin/Extension.js.map +1 -1
  47. package/admin/IsRootTenant.js +14 -32
  48. package/admin/IsRootTenant.js.map +1 -1
  49. package/admin/SecurityPermission.js +11 -14
  50. package/admin/SecurityPermission.js.map +1 -1
  51. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +36 -37
  52. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -1
  53. package/admin/TenantEntryList/EnableTenant/EnableTenant.js +10 -14
  54. package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -1
  55. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +34 -33
  56. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -1
  57. package/admin/TenantEntryList/FolderNameCell.js +19 -24
  58. package/admin/TenantEntryList/FolderNameCell.js.map +1 -1
  59. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +10 -14
  60. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -1
  61. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +3 -2
  62. package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +1 -1
  63. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +34 -38
  64. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -1
  65. package/admin/TenantEntryList/ManageTenant.js +15 -16
  66. package/admin/TenantEntryList/ManageTenant.js.map +1 -1
  67. package/admin/TenantEntryList/TenantCell.js +15 -30
  68. package/admin/TenantEntryList/TenantCell.js.map +1 -1
  69. package/admin/TenantEntryList/TenantNameCell.js +35 -45
  70. package/admin/TenantEntryList/TenantNameCell.js.map +1 -1
  71. package/admin/TenantEntryList.js +43 -60
  72. package/admin/TenantEntryList.js.map +1 -1
  73. package/admin/TenantSelector.js +31 -35
  74. package/admin/TenantSelector.js.map +1 -1
  75. package/admin/domain/permissionsSchema.js +4 -3
  76. package/admin/domain/permissionsSchema.js.map +1 -1
  77. package/admin/features/permissions/abstractions.js +2 -1
  78. package/admin/features/permissions/abstractions.js.map +1 -1
  79. package/admin/features/permissions/feature.js +2 -1
  80. package/admin/features/permissions/feature.js.map +1 -1
  81. package/admin/types.js +0 -3
  82. package/api/Extension.js +20 -23
  83. package/api/Extension.js.map +1 -1
  84. package/api/domain/TenantId.js +5 -7
  85. package/api/domain/TenantId.js.map +1 -1
  86. package/api/domain/TenantModel.js +59 -37
  87. package/api/domain/TenantModel.js.map +1 -1
  88. package/api/domain/TenantModelExtension.js +2 -2
  89. package/api/domain/TenantModelExtension.js.map +1 -1
  90. package/api/domain/errors.js +49 -54
  91. package/api/domain/errors.js.map +1 -1
  92. package/api/features/AddCmsPermissions/AddCmsPermissions.js +40 -31
  93. package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -1
  94. package/api/features/AddCmsPermissions/feature.js +6 -5
  95. package/api/features/AddCmsPermissions/feature.js.map +1 -1
  96. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +67 -85
  97. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -1
  98. package/api/features/CreateAndInstallTenant/abstractions.js +2 -6
  99. package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -1
  100. package/api/features/CreateAndInstallTenant/feature.js +6 -6
  101. package/api/features/CreateAndInstallTenant/feature.js.map +1 -1
  102. package/api/features/CreateTenant/CreateTenantRepository.js +33 -38
  103. package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -1
  104. package/api/features/CreateTenant/CreateTenantUseCase.js +29 -32
  105. package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -1
  106. package/api/features/CreateTenant/abstractions.js +3 -8
  107. package/api/features/CreateTenant/abstractions.js.map +1 -1
  108. package/api/features/CreateTenant/feature.js +7 -9
  109. package/api/features/CreateTenant/feature.js.map +1 -1
  110. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +17 -27
  111. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -1
  112. package/api/features/DeleteTenantOnEntryDelete/feature.js +6 -6
  113. package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -1
  114. package/api/features/DisableTenant/DisableTenantUseCase.js +41 -53
  115. package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -1
  116. package/api/features/DisableTenant/abstractions.js +2 -1
  117. package/api/features/DisableTenant/abstractions.js.map +1 -1
  118. package/api/features/DisableTenant/events.js +17 -12
  119. package/api/features/DisableTenant/events.js.map +1 -1
  120. package/api/features/DisableTenant/feature.js +6 -6
  121. package/api/features/DisableTenant/feature.js.map +1 -1
  122. package/api/features/EnableTenant/EnableTenantUseCase.js +43 -55
  123. package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -1
  124. package/api/features/EnableTenant/abstractions.js +2 -1
  125. package/api/features/EnableTenant/abstractions.js.map +1 -1
  126. package/api/features/EnableTenant/events.js +17 -12
  127. package/api/features/EnableTenant/events.js.map +1 -1
  128. package/api/features/EnableTenant/feature.js +6 -6
  129. package/api/features/EnableTenant/feature.js.map +1 -1
  130. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +21 -24
  131. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -1
  132. package/api/features/GetCurrentTenant/abstractions.js +2 -7
  133. package/api/features/GetCurrentTenant/abstractions.js.map +1 -1
  134. package/api/features/GetCurrentTenant/feature.js +6 -6
  135. package/api/features/GetCurrentTenant/feature.js.map +1 -1
  136. package/api/features/GetTenantById/GetTenantByIdRepository.js +31 -36
  137. package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -1
  138. package/api/features/GetTenantById/GetTenantByIdUseCase.js +15 -19
  139. package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
  140. package/api/features/GetTenantById/abstractions.js +3 -12
  141. package/api/features/GetTenantById/abstractions.js.map +1 -1
  142. package/api/features/GetTenantById/feature.js +7 -9
  143. package/api/features/GetTenantById/feature.js.map +1 -1
  144. package/api/features/UpdateTenant/UpdateTenantRepository.js +40 -47
  145. package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -1
  146. package/api/features/UpdateTenant/UpdateTenantUseCase.js +15 -15
  147. package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
  148. package/api/features/UpdateTenant/abstractions.js +3 -12
  149. package/api/features/UpdateTenant/abstractions.js.map +1 -1
  150. package/api/features/UpdateTenant/feature.js +7 -9
  151. package/api/features/UpdateTenant/feature.js.map +1 -1
  152. package/api/graphql/CreateTenantSchema.js +53 -55
  153. package/api/graphql/CreateTenantSchema.js.map +1 -1
  154. package/api/graphql/DisableTenantSchema.js +20 -24
  155. package/api/graphql/DisableTenantSchema.js.map +1 -1
  156. package/api/graphql/EnableTenantSchema.js +20 -24
  157. package/api/graphql/EnableTenantSchema.js.map +1 -1
  158. package/api/graphql/GetCurrentTenantSchema.js +24 -28
  159. package/api/graphql/GetCurrentTenantSchema.js.map +1 -1
  160. package/api/graphql/InstallTenantSchema.js +26 -33
  161. package/api/graphql/InstallTenantSchema.js.map +1 -1
  162. package/exports/admin/tenancy.js +1 -5
  163. package/exports/api/tenant-manager.js +0 -2
  164. package/index.js +0 -2
  165. package/package.json +16 -16
  166. package/shared/Tenant.js +23 -22
  167. package/shared/Tenant.js.map +1 -1
  168. package/shared/constants.js +2 -1
  169. package/shared/constants.js.map +1 -1
  170. package/admin/DisableTenant/index.js.map +0 -1
  171. package/admin/EnableTenant/index.js.map +0 -1
  172. package/admin/types.js.map +0 -1
  173. package/exports/admin/tenancy.js.map +0 -1
  174. package/exports/api/tenant-manager.js.map +0 -1
  175. package/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["DisableTenantUseCase","UseCaseAbstraction","Result","IdentityContext","EventPublisher","NotAuthorizedError","UpdateTenantUseCase","ApiCoreUpdateTenant","TenantManagerUpdateTenant","GetTenantByIdUseCase","TenantBeforeDisableEvent","TenantAfterDisableEvent","TenantPersistenceError","constructor","identityContext","eventPublisher","coreUpdateTenant","tmUpdateTenant","tmGetTenantById","execute","tenantId","getPermission","fail","getTenantResult","isFail","error","tenant","value","publish","apiCoreResult","status","Error","updateResult","ok","createImplementation","implementation","dependencies"],"sources":["DisableTenantUseCase.ts"],"sourcesContent":["import { DisableTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { UpdateTenantUseCase as ApiCoreUpdateTenant } from \"@webiny/api-core/features/tenancy/UpdateTenant\";\nimport { UpdateTenantUseCase as TenantManagerUpdateTenant } from \"../UpdateTenant/abstractions.js\";\nimport { GetTenantByIdUseCase } from \"../GetTenantById/abstractions.js\";\nimport { TenantBeforeDisableEvent, TenantAfterDisableEvent } from \"./events.js\";\nimport { TenantPersistenceError } from \"../../domain/errors.js\";\n\nclass DisableTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private coreUpdateTenant: ApiCoreUpdateTenant.Interface,\n private tmUpdateTenant: TenantManagerUpdateTenant.Interface,\n private tmGetTenantById: GetTenantByIdUseCase.Interface\n ) {}\n\n async execute(tenantId: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Authorization checks\n if (!this.identityContext.getPermission(\"tm.tenant\")) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get current tenant to verify it exists\n const getTenantResult = await this.tmGetTenantById.execute(tenantId);\n if (getTenantResult.isFail()) {\n return Result.fail(getTenantResult.error);\n }\n\n const tenant = getTenantResult.value;\n\n // Publish before event\n await this.eventPublisher.publish(new TenantBeforeDisableEvent({ tenant }));\n\n // Update api-core tenant first\n const apiCoreResult = await this.coreUpdateTenant.execute(tenantId, {\n status: \"disabled\"\n });\n if (apiCoreResult.isFail()) {\n return Result.fail(\n new TenantPersistenceError(\n new Error(`Failed to update api-core tenant: ${apiCoreResult.error}`)\n )\n );\n }\n\n // Update tenant-manager CMS entry\n const updateResult = await this.tmUpdateTenant.execute(tenantId, {\n status: \"disabled\"\n });\n\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new TenantAfterDisableEvent({ tenant: updateResult.value })\n );\n\n return Result.ok();\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: DisableTenantUseCase,\n dependencies: [\n IdentityContext,\n EventPublisher,\n ApiCoreUpdateTenant,\n TenantManagerUpdateTenant,\n GetTenantByIdUseCase\n ]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,IAAIC,kBAAkB;AACnD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,cAAc,QAAQ,mDAAmD;AAClF,SAASC,kBAAkB,QAAQ,qDAAqD;AACxF,SAASC,mBAAmB,IAAIC,mBAAmB,QAAQ,gDAAgD;AAC3G,SAASD,mBAAmB,IAAIE,yBAAyB;AACzD,SAASC,oBAAoB;AAC7B,SAASC,wBAAwB,EAAEC,uBAAuB;AAC1D,SAASC,sBAAsB;AAE/B,MAAMZ,oBAAoB,CAAyC;EAC/Da,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,gBAA+C,EAC/CC,cAAmD,EACnDC,eAA+C,EACzD;IAAA,KALUJ,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,gBAA+C,GAA/CA,gBAA+C;IAAA,KAC/CC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAA+C,GAA/CA,eAA+C;EACxD;EAEH,MAAMC,OAAOA,CAACC,QAAgB,EAAmD;IAC7E;IACA,IAAI,CAAC,IAAI,CAACN,eAAe,CAACO,aAAa,CAAC,WAAW,CAAC,EAAE;MAClD,OAAOnB,MAAM,CAACoB,IAAI,CAAC,IAAIjB,kBAAkB,CAAC,CAAC,CAAC;IAChD;;IAEA;IACA,MAAMkB,eAAe,GAAG,MAAM,IAAI,CAACL,eAAe,CAACC,OAAO,CAACC,QAAQ,CAAC;IACpE,IAAIG,eAAe,CAACC,MAAM,CAAC,CAAC,EAAE;MAC1B,OAAOtB,MAAM,CAACoB,IAAI,CAACC,eAAe,CAACE,KAAK,CAAC;IAC7C;IAEA,MAAMC,MAAM,GAAGH,eAAe,CAACI,KAAK;;IAEpC;IACA,MAAM,IAAI,CAACZ,cAAc,CAACa,OAAO,CAAC,IAAIlB,wBAAwB,CAAC;MAAEgB;IAAO,CAAC,CAAC,CAAC;;IAE3E;IACA,MAAMG,aAAa,GAAG,MAAM,IAAI,CAACb,gBAAgB,CAACG,OAAO,CAACC,QAAQ,EAAE;MAChEU,MAAM,EAAE;IACZ,CAAC,CAAC;IACF,IAAID,aAAa,CAACL,MAAM,CAAC,CAAC,EAAE;MACxB,OAAOtB,MAAM,CAACoB,IAAI,CACd,IAAIV,sBAAsB,CACtB,IAAImB,KAAK,CAAC,qCAAqCF,aAAa,CAACJ,KAAK,EAAE,CACxE,CACJ,CAAC;IACL;;IAEA;IACA,MAAMO,YAAY,GAAG,MAAM,IAAI,CAACf,cAAc,CAACE,OAAO,CAACC,QAAQ,EAAE;MAC7DU,MAAM,EAAE;IACZ,CAAC,CAAC;IAEF,IAAIE,YAAY,CAACR,MAAM,CAAC,CAAC,EAAE;MACvB,OAAOtB,MAAM,CAACoB,IAAI,CAACU,YAAY,CAACP,KAAK,CAAC;IAC1C;;IAEA;IACA,MAAM,IAAI,CAACV,cAAc,CAACa,OAAO,CAC7B,IAAIjB,uBAAuB,CAAC;MAAEe,MAAM,EAAEM,YAAY,CAACL;IAAM,CAAC,CAC9D,CAAC;IAED,OAAOzB,MAAM,CAAC+B,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,eAAehC,kBAAkB,CAACiC,oBAAoB,CAAC;EACnDC,cAAc,EAAEnC,oBAAoB;EACpCoC,YAAY,EAAE,CACVjC,eAAe,EACfC,cAAc,EACdG,mBAAmB,EACnBC,yBAAyB,EACzBC,oBAAoB;AAE5B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/DisableTenant/DisableTenantUseCase.js","sources":["../../../../src/api/features/DisableTenant/DisableTenantUseCase.ts"],"sourcesContent":["import { DisableTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { UpdateTenantUseCase as ApiCoreUpdateTenant } from \"@webiny/api-core/features/tenancy/UpdateTenant\";\nimport { UpdateTenantUseCase as TenantManagerUpdateTenant } from \"../UpdateTenant/abstractions.js\";\nimport { GetTenantByIdUseCase } from \"../GetTenantById/abstractions.js\";\nimport { TenantBeforeDisableEvent, TenantAfterDisableEvent } from \"./events.js\";\nimport { TenantPersistenceError } from \"../../domain/errors.js\";\n\nclass DisableTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private coreUpdateTenant: ApiCoreUpdateTenant.Interface,\n private tmUpdateTenant: TenantManagerUpdateTenant.Interface,\n private tmGetTenantById: GetTenantByIdUseCase.Interface\n ) {}\n\n async execute(tenantId: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Authorization checks\n if (!this.identityContext.getPermission(\"tm.tenant\")) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get current tenant to verify it exists\n const getTenantResult = await this.tmGetTenantById.execute(tenantId);\n if (getTenantResult.isFail()) {\n return Result.fail(getTenantResult.error);\n }\n\n const tenant = getTenantResult.value;\n\n // Publish before event\n await this.eventPublisher.publish(new TenantBeforeDisableEvent({ tenant }));\n\n // Update api-core tenant first\n const apiCoreResult = await this.coreUpdateTenant.execute(tenantId, {\n status: \"disabled\"\n });\n if (apiCoreResult.isFail()) {\n return Result.fail(\n new TenantPersistenceError(\n new Error(`Failed to update api-core tenant: ${apiCoreResult.error}`)\n )\n );\n }\n\n // Update tenant-manager CMS entry\n const updateResult = await this.tmUpdateTenant.execute(tenantId, {\n status: \"disabled\"\n });\n\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new TenantAfterDisableEvent({ tenant: updateResult.value })\n );\n\n return Result.ok();\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: DisableTenantUseCase,\n dependencies: [\n IdentityContext,\n EventPublisher,\n ApiCoreUpdateTenant,\n TenantManagerUpdateTenant,\n GetTenantByIdUseCase\n ]\n});\n"],"names":["DisableTenantUseCase","identityContext","eventPublisher","coreUpdateTenant","tmUpdateTenant","tmGetTenantById","tenantId","Result","NotAuthorizedError","getTenantResult","tenant","TenantBeforeDisableEvent","apiCoreResult","TenantPersistenceError","Error","updateResult","TenantAfterDisableEvent","UseCaseAbstraction","IdentityContext","EventPublisher","ApiCoreUpdateTenant","TenantManagerUpdateTenant","GetTenantByIdUseCase"],"mappings":";;;;;;;;;;AAWA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,gBAA+C,EAC/CC,cAAmD,EACnDC,eAA+C,CACzD;aALUJ,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,gBAAgB,GAAhBA;aACAC,cAAc,GAAdA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QAAQC,QAAgB,EAAmD;QAE7E,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,cACpC,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,kBAAkB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACH;QAC3D,IAAIG,gBAAgB,MAAM,IACtB,OAAOF,OAAO,IAAI,CAACE,gBAAgB,KAAK;QAG5C,MAAMC,SAASD,gBAAgB,KAAK;QAGpC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIE,yBAAyB;YAAED;QAAO;QAGxE,MAAME,gBAAgB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAACN,UAAU;YAChE,QAAQ;QACZ;QACA,IAAIM,cAAc,MAAM,IACpB,OAAOL,OAAO,IAAI,CACd,IAAIM,uBACA,IAAIC,MAAM,CAAC,kCAAkC,EAAEF,cAAc,KAAK,EAAE;QAMhF,MAAMG,eAAe,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACT,UAAU;YAC7D,QAAQ;QACZ;QAEA,IAAIS,aAAa,MAAM,IACnB,OAAOR,OAAO,IAAI,CAACQ,aAAa,KAAK;QAIzC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,wBAAwB;YAAE,QAAQD,aAAa,KAAK;QAAC;QAG7D,OAAOR,OAAO,EAAE;IACpB;AACJ;AAEA,2CAAeU,qBAAAA,oBAAuC,CAAC;IACnD,gBAAgBjB;IAChB,cAAc;QACVkB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const DisableTenantUseCase = createAbstraction("TenantManager/DisableTenantUseCase");
2
+ const DisableTenantUseCase = createAbstraction("TenantManager/DisableTenantUseCase");
3
+ export { DisableTenantUseCase };
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DisableTenantUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\n\nexport interface IDisableTenantUseCase {\n execute(tenantId: string): Promise<Result<void, DisableTenantUseCase.Error>>;\n}\n\nexport interface IDisableTenantUseCaseErrors {\n notAuthorized: NotAuthorizedError;\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFound: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IDisableTenantUseCaseErrors[keyof IDisableTenantUseCaseErrors];\n\nexport const DisableTenantUseCase = createAbstraction<IDisableTenantUseCase>(\n \"TenantManager/DisableTenantUseCase\"\n);\n\nexport namespace DisableTenantUseCase {\n export type Interface = IDisableTenantUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAsBvD,OAAO,MAAMC,oBAAoB,GAAGD,iBAAiB,CACjD,oCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/DisableTenant/abstractions.js","sources":["../../../../src/api/features/DisableTenant/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\n\nexport interface IDisableTenantUseCase {\n execute(tenantId: string): Promise<Result<void, DisableTenantUseCase.Error>>;\n}\n\nexport interface IDisableTenantUseCaseErrors {\n notAuthorized: NotAuthorizedError;\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFound: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IDisableTenantUseCaseErrors[keyof IDisableTenantUseCaseErrors];\n\nexport const DisableTenantUseCase = createAbstraction<IDisableTenantUseCase>(\n \"TenantManager/DisableTenantUseCase\"\n);\n\nexport namespace DisableTenantUseCase {\n export type Interface = IDisableTenantUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["DisableTenantUseCase","createAbstraction"],"mappings":";AAsBO,MAAMA,uBAAuBC,kBAChC"}
@@ -1,18 +1,23 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
2
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
- export class TenantBeforeDisableEvent extends DomainEvent {
4
- eventType = "tenant.beforeDisable";
5
- getHandlerAbstraction() {
6
- return TenantBeforeDisableEventHandler;
7
- }
3
+ class TenantBeforeDisableEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TenantBeforeDisableEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "tenant.beforeDisable";
9
+ }
8
10
  }
9
- export const TenantBeforeDisableEventHandler = createAbstraction("TenantManager/TenantBeforeDisableEventHandler");
10
- export class TenantAfterDisableEvent extends DomainEvent {
11
- eventType = "tenant.afterDisable";
12
- getHandlerAbstraction() {
13
- return TenantAfterDisableEventHandler;
14
- }
11
+ const TenantBeforeDisableEventHandler = createAbstraction("TenantManager/TenantBeforeDisableEventHandler");
12
+ class TenantAfterDisableEvent extends DomainEvent {
13
+ getHandlerAbstraction() {
14
+ return TenantAfterDisableEventHandler;
15
+ }
16
+ constructor(...args){
17
+ super(...args), this.eventType = "tenant.afterDisable";
18
+ }
15
19
  }
16
- export const TenantAfterDisableEventHandler = createAbstraction("TenantManager/TenantAfterDisableEventHandler");
20
+ const TenantAfterDisableEventHandler = createAbstraction("TenantManager/TenantAfterDisableEventHandler");
21
+ export { TenantAfterDisableEvent, TenantAfterDisableEventHandler, TenantBeforeDisableEvent, TenantBeforeDisableEventHandler };
17
22
 
18
23
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","TenantBeforeDisableEvent","eventType","getHandlerAbstraction","TenantBeforeDisableEventHandler","TenantAfterDisableEvent","TenantAfterDisableEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Tenant } from \"~/shared/Tenant.js\";\n\nexport interface TenantBeforeDisablePayload {\n tenant: Tenant;\n}\n\nexport interface TenantAfterDisablePayload {\n tenant: Tenant;\n}\n\nexport class TenantBeforeDisableEvent extends DomainEvent<TenantBeforeDisablePayload> {\n eventType = \"tenant.beforeDisable\" as const;\n\n getHandlerAbstraction() {\n return TenantBeforeDisableEventHandler;\n }\n}\n\nexport const TenantBeforeDisableEventHandler = createAbstraction<\n IEventHandler<TenantBeforeDisableEvent>\n>(\"TenantManager/TenantBeforeDisableEventHandler\");\n\nexport namespace TenantBeforeDisableEventHandler {\n export type Interface = IEventHandler<TenantBeforeDisableEvent>;\n export type Event = TenantBeforeDisableEvent;\n}\n\nexport class TenantAfterDisableEvent extends DomainEvent<TenantAfterDisablePayload> {\n eventType = \"tenant.afterDisable\" as const;\n\n getHandlerAbstraction() {\n return TenantAfterDisableEventHandler;\n }\n}\n\nexport const TenantAfterDisableEventHandler = createAbstraction<\n IEventHandler<TenantAfterDisableEvent>\n>(\"TenantManager/TenantAfterDisableEventHandler\");\n\nexport namespace TenantAfterDisableEventHandler {\n export type Interface = IEventHandler<TenantAfterDisableEvent>;\n export type Event = TenantAfterDisableEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;AAY/E,OAAO,MAAMC,wBAAwB,SAASD,WAAW,CAA6B;EAClFE,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,+BAA+B;EAC1C;AACJ;AAEA,OAAO,MAAMA,+BAA+B,GAAGL,iBAAiB,CAE9D,+CAA+C,CAAC;AAOlD,OAAO,MAAMM,uBAAuB,SAASL,WAAW,CAA4B;EAChFE,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,8BAA8B;EACzC;AACJ;AAEA,OAAO,MAAMA,8BAA8B,GAAGP,iBAAiB,CAE7D,8CAA8C,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/DisableTenant/events.js","sources":["../../../../src/api/features/DisableTenant/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Tenant } from \"~/shared/Tenant.js\";\n\nexport interface TenantBeforeDisablePayload {\n tenant: Tenant;\n}\n\nexport interface TenantAfterDisablePayload {\n tenant: Tenant;\n}\n\nexport class TenantBeforeDisableEvent extends DomainEvent<TenantBeforeDisablePayload> {\n eventType = \"tenant.beforeDisable\" as const;\n\n getHandlerAbstraction() {\n return TenantBeforeDisableEventHandler;\n }\n}\n\nexport const TenantBeforeDisableEventHandler = createAbstraction<\n IEventHandler<TenantBeforeDisableEvent>\n>(\"TenantManager/TenantBeforeDisableEventHandler\");\n\nexport namespace TenantBeforeDisableEventHandler {\n export type Interface = IEventHandler<TenantBeforeDisableEvent>;\n export type Event = TenantBeforeDisableEvent;\n}\n\nexport class TenantAfterDisableEvent extends DomainEvent<TenantAfterDisablePayload> {\n eventType = \"tenant.afterDisable\" as const;\n\n getHandlerAbstraction() {\n return TenantAfterDisableEventHandler;\n }\n}\n\nexport const TenantAfterDisableEventHandler = createAbstraction<\n IEventHandler<TenantAfterDisableEvent>\n>(\"TenantManager/TenantAfterDisableEventHandler\");\n\nexport namespace TenantAfterDisableEventHandler {\n export type Interface = IEventHandler<TenantAfterDisableEvent>;\n export type Event = TenantAfterDisableEvent;\n}\n"],"names":["TenantBeforeDisableEvent","DomainEvent","TenantBeforeDisableEventHandler","createAbstraction","TenantAfterDisableEvent","TenantAfterDisableEventHandler"],"mappings":";;AAaO,MAAMA,iCAAiCC;IAG1C,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,kCAAkCC,kBAE7C;AAOK,MAAMC,gCAAgCH;IAGzC,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,iCAAiCF,kBAE5C"}
@@ -1,11 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import DisableTenantUseCase from "./DisableTenantUseCase.js";
3
- export const DisableTenantFeature = createFeature({
4
- name: "DisableTenant",
5
- register(container) {
6
- // Register use case (transient scope)
7
- container.register(DisableTenantUseCase);
8
- }
3
+ const DisableTenantFeature = createFeature({
4
+ name: "DisableTenant",
5
+ register (container) {
6
+ container.register(DisableTenantUseCase);
7
+ }
9
8
  });
9
+ export { DisableTenantFeature };
10
10
 
11
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","DisableTenantUseCase","DisableTenantFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport DisableTenantUseCase from \"./DisableTenantUseCase.js\";\n\nexport const DisableTenantFeature = createFeature({\n name: \"DisableTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(DisableTenantUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,oBAAoB;AAE3B,OAAO,MAAMC,oBAAoB,GAAGF,aAAa,CAAC;EAC9CG,IAAI,EAAE,eAAe;EACrBC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACH,oBAAoB,CAAC;EAC5C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/DisableTenant/feature.js","sources":["../../../../src/api/features/DisableTenant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport DisableTenantUseCase from \"./DisableTenantUseCase.js\";\n\nexport const DisableTenantFeature = createFeature({\n name: \"DisableTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(DisableTenantUseCase);\n }\n});\n"],"names":["DisableTenantFeature","createFeature","container","DisableTenantUseCase"],"mappings":";;AAGO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,67 +1,55 @@
1
- import { EnableTenantUseCase as UseCaseAbstraction } from "./abstractions.js";
1
+ import { EnableTenantUseCase } from "./abstractions.js";
2
2
  import { Result } from "@webiny/feature/api";
3
3
  import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
4
4
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
6
- import { UpdateTenantUseCase as ApiCoreUpdateTenant } from "@webiny/api-core/features/tenancy/UpdateTenant";
7
- import { UpdateTenantUseCase as TenantManagerUpdateTenant } from "../UpdateTenant/abstractions.js";
6
+ import { UpdateTenantUseCase } from "@webiny/api-core/features/tenancy/UpdateTenant";
7
+ import { UpdateTenantUseCase as abstractions_js_UpdateTenantUseCase } from "../UpdateTenant/abstractions.js";
8
8
  import { GetTenantByIdUseCase } from "../GetTenantById/abstractions.js";
9
- import { TenantBeforeEnableEvent, TenantAfterEnableEvent } from "./events.js";
9
+ import { TenantAfterEnableEvent, TenantBeforeEnableEvent } from "./events.js";
10
10
  import { TenantPersistenceError } from "../../domain/errors.js";
11
- class EnableTenantUseCase {
12
- constructor(identityContext, eventPublisher, coreUpdateTenant, tmUpdateTenant, tmGetTenantById) {
13
- this.identityContext = identityContext;
14
- this.eventPublisher = eventPublisher;
15
- this.coreUpdateTenant = coreUpdateTenant;
16
- this.tmUpdateTenant = tmUpdateTenant;
17
- this.tmGetTenantById = tmGetTenantById;
18
- }
19
- async execute(tenantId) {
20
- // Authorization checks
21
- if (!this.identityContext.getPermission("tm.tenant")) {
22
- return Result.fail(new NotAuthorizedError({
23
- message: "Not authorized to enable tenants."
24
- }));
11
+ class EnableTenantUseCase_EnableTenantUseCase {
12
+ constructor(identityContext, eventPublisher, coreUpdateTenant, tmUpdateTenant, tmGetTenantById){
13
+ this.identityContext = identityContext;
14
+ this.eventPublisher = eventPublisher;
15
+ this.coreUpdateTenant = coreUpdateTenant;
16
+ this.tmUpdateTenant = tmUpdateTenant;
17
+ this.tmGetTenantById = tmGetTenantById;
25
18
  }
26
-
27
- // Get current tenant to verify it exists
28
- const getTenantResult = await this.tmGetTenantById.execute(tenantId);
29
- if (getTenantResult.isFail()) {
30
- return Result.fail(getTenantResult.error);
31
- }
32
- const tenant = getTenantResult.value;
33
-
34
- // Publish before event
35
- await this.eventPublisher.publish(new TenantBeforeEnableEvent({
36
- tenant
37
- }));
38
-
39
- // Update api-core tenant first
40
- const apiCoreResult = await this.coreUpdateTenant.execute(tenantId, {
41
- status: "enabled"
42
- });
43
- if (apiCoreResult.isFail()) {
44
- return Result.fail(new TenantPersistenceError(new Error(`Failed to update api-core tenant: ${apiCoreResult.error}`)));
19
+ async execute(tenantId) {
20
+ if (!this.identityContext.getPermission("tm.tenant")) return Result.fail(new NotAuthorizedError({
21
+ message: "Not authorized to enable tenants."
22
+ }));
23
+ const getTenantResult = await this.tmGetTenantById.execute(tenantId);
24
+ if (getTenantResult.isFail()) return Result.fail(getTenantResult.error);
25
+ const tenant = getTenantResult.value;
26
+ await this.eventPublisher.publish(new TenantBeforeEnableEvent({
27
+ tenant
28
+ }));
29
+ const apiCoreResult = await this.coreUpdateTenant.execute(tenantId, {
30
+ status: "enabled"
31
+ });
32
+ if (apiCoreResult.isFail()) return Result.fail(new TenantPersistenceError(new Error(`Failed to update api-core tenant: ${apiCoreResult.error}`)));
33
+ const updatedTenantResult = await this.tmUpdateTenant.execute(tenantId, {
34
+ status: "enabled"
35
+ });
36
+ if (updatedTenantResult.isFail()) return Result.fail(updatedTenantResult.error);
37
+ await this.eventPublisher.publish(new TenantAfterEnableEvent({
38
+ tenant: updatedTenantResult.value
39
+ }));
40
+ return Result.ok();
45
41
  }
46
-
47
- // Update tenant-manager CMS entry
48
- const updatedTenantResult = await this.tmUpdateTenant.execute(tenantId, {
49
- status: "enabled"
50
- });
51
- if (updatedTenantResult.isFail()) {
52
- return Result.fail(updatedTenantResult.error);
53
- }
54
-
55
- // Publish after event
56
- await this.eventPublisher.publish(new TenantAfterEnableEvent({
57
- tenant: updatedTenantResult.value
58
- }));
59
- return Result.ok();
60
- }
61
42
  }
62
- export default UseCaseAbstraction.createImplementation({
63
- implementation: EnableTenantUseCase,
64
- dependencies: [IdentityContext, EventPublisher, ApiCoreUpdateTenant, TenantManagerUpdateTenant, GetTenantByIdUseCase]
43
+ const EnableTenant_EnableTenantUseCase = EnableTenantUseCase.createImplementation({
44
+ implementation: EnableTenantUseCase_EnableTenantUseCase,
45
+ dependencies: [
46
+ IdentityContext,
47
+ EventPublisher,
48
+ UpdateTenantUseCase,
49
+ abstractions_js_UpdateTenantUseCase,
50
+ GetTenantByIdUseCase
51
+ ]
65
52
  });
53
+ export default EnableTenant_EnableTenantUseCase;
66
54
 
67
55
  //# sourceMappingURL=EnableTenantUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["EnableTenantUseCase","UseCaseAbstraction","Result","IdentityContext","EventPublisher","NotAuthorizedError","UpdateTenantUseCase","ApiCoreUpdateTenant","TenantManagerUpdateTenant","GetTenantByIdUseCase","TenantBeforeEnableEvent","TenantAfterEnableEvent","TenantPersistenceError","constructor","identityContext","eventPublisher","coreUpdateTenant","tmUpdateTenant","tmGetTenantById","execute","tenantId","getPermission","fail","message","getTenantResult","isFail","error","tenant","value","publish","apiCoreResult","status","Error","updatedTenantResult","ok","createImplementation","implementation","dependencies"],"sources":["EnableTenantUseCase.ts"],"sourcesContent":["import { EnableTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { UpdateTenantUseCase as ApiCoreUpdateTenant } from \"@webiny/api-core/features/tenancy/UpdateTenant\";\nimport { UpdateTenantUseCase as TenantManagerUpdateTenant } from \"../UpdateTenant/abstractions.js\";\nimport { GetTenantByIdUseCase } from \"../GetTenantById/abstractions.js\";\nimport { TenantBeforeEnableEvent, TenantAfterEnableEvent } from \"./events.js\";\nimport { TenantPersistenceError } from \"../../domain/errors.js\";\n\nclass EnableTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private coreUpdateTenant: ApiCoreUpdateTenant.Interface,\n private tmUpdateTenant: TenantManagerUpdateTenant.Interface,\n private tmGetTenantById: GetTenantByIdUseCase.Interface\n ) {}\n\n async execute(tenantId: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Authorization checks\n if (!this.identityContext.getPermission(\"tm.tenant\")) {\n return Result.fail(\n new NotAuthorizedError({ message: \"Not authorized to enable tenants.\" })\n );\n }\n\n // Get current tenant to verify it exists\n const getTenantResult = await this.tmGetTenantById.execute(tenantId);\n if (getTenantResult.isFail()) {\n return Result.fail(getTenantResult.error);\n }\n\n const tenant = getTenantResult.value;\n\n // Publish before event\n await this.eventPublisher.publish(new TenantBeforeEnableEvent({ tenant }));\n\n // Update api-core tenant first\n const apiCoreResult = await this.coreUpdateTenant.execute(tenantId, {\n status: \"enabled\"\n });\n\n if (apiCoreResult.isFail()) {\n return Result.fail(\n new TenantPersistenceError(\n new Error(`Failed to update api-core tenant: ${apiCoreResult.error}`)\n )\n );\n }\n\n // Update tenant-manager CMS entry\n const updatedTenantResult = await this.tmUpdateTenant.execute(tenantId, {\n status: \"enabled\"\n });\n\n if (updatedTenantResult.isFail()) {\n return Result.fail(updatedTenantResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new TenantAfterEnableEvent({ tenant: updatedTenantResult.value })\n );\n\n return Result.ok();\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: EnableTenantUseCase,\n dependencies: [\n IdentityContext,\n EventPublisher,\n ApiCoreUpdateTenant,\n TenantManagerUpdateTenant,\n GetTenantByIdUseCase\n ]\n});\n"],"mappings":"AAAA,SAASA,mBAAmB,IAAIC,kBAAkB;AAClD,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,cAAc,QAAQ,mDAAmD;AAClF,SAASC,kBAAkB,QAAQ,qDAAqD;AACxF,SAASC,mBAAmB,IAAIC,mBAAmB,QAAQ,gDAAgD;AAC3G,SAASD,mBAAmB,IAAIE,yBAAyB;AACzD,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB,EAAEC,sBAAsB;AACxD,SAASC,sBAAsB;AAE/B,MAAMZ,mBAAmB,CAAyC;EAC9Da,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,gBAA+C,EAC/CC,cAAmD,EACnDC,eAA+C,EACzD;IAAA,KALUJ,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,gBAA+C,GAA/CA,gBAA+C;IAAA,KAC/CC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,eAA+C,GAA/CA,eAA+C;EACxD;EAEH,MAAMC,OAAOA,CAACC,QAAgB,EAAmD;IAC7E;IACA,IAAI,CAAC,IAAI,CAACN,eAAe,CAACO,aAAa,CAAC,WAAW,CAAC,EAAE;MAClD,OAAOnB,MAAM,CAACoB,IAAI,CACd,IAAIjB,kBAAkB,CAAC;QAAEkB,OAAO,EAAE;MAAoC,CAAC,CAC3E,CAAC;IACL;;IAEA;IACA,MAAMC,eAAe,GAAG,MAAM,IAAI,CAACN,eAAe,CAACC,OAAO,CAACC,QAAQ,CAAC;IACpE,IAAII,eAAe,CAACC,MAAM,CAAC,CAAC,EAAE;MAC1B,OAAOvB,MAAM,CAACoB,IAAI,CAACE,eAAe,CAACE,KAAK,CAAC;IAC7C;IAEA,MAAMC,MAAM,GAAGH,eAAe,CAACI,KAAK;;IAEpC;IACA,MAAM,IAAI,CAACb,cAAc,CAACc,OAAO,CAAC,IAAInB,uBAAuB,CAAC;MAAEiB;IAAO,CAAC,CAAC,CAAC;;IAE1E;IACA,MAAMG,aAAa,GAAG,MAAM,IAAI,CAACd,gBAAgB,CAACG,OAAO,CAACC,QAAQ,EAAE;MAChEW,MAAM,EAAE;IACZ,CAAC,CAAC;IAEF,IAAID,aAAa,CAACL,MAAM,CAAC,CAAC,EAAE;MACxB,OAAOvB,MAAM,CAACoB,IAAI,CACd,IAAIV,sBAAsB,CACtB,IAAIoB,KAAK,CAAC,qCAAqCF,aAAa,CAACJ,KAAK,EAAE,CACxE,CACJ,CAAC;IACL;;IAEA;IACA,MAAMO,mBAAmB,GAAG,MAAM,IAAI,CAAChB,cAAc,CAACE,OAAO,CAACC,QAAQ,EAAE;MACpEW,MAAM,EAAE;IACZ,CAAC,CAAC;IAEF,IAAIE,mBAAmB,CAACR,MAAM,CAAC,CAAC,EAAE;MAC9B,OAAOvB,MAAM,CAACoB,IAAI,CAACW,mBAAmB,CAACP,KAAK,CAAC;IACjD;;IAEA;IACA,MAAM,IAAI,CAACX,cAAc,CAACc,OAAO,CAC7B,IAAIlB,sBAAsB,CAAC;MAAEgB,MAAM,EAAEM,mBAAmB,CAACL;IAAM,CAAC,CACpE,CAAC;IAED,OAAO1B,MAAM,CAACgC,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,eAAejC,kBAAkB,CAACkC,oBAAoB,CAAC;EACnDC,cAAc,EAAEpC,mBAAmB;EACnCqC,YAAY,EAAE,CACVlC,eAAe,EACfC,cAAc,EACdG,mBAAmB,EACnBC,yBAAyB,EACzBC,oBAAoB;AAE5B,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/EnableTenant/EnableTenantUseCase.js","sources":["../../../../src/api/features/EnableTenant/EnableTenantUseCase.ts"],"sourcesContent":["import { EnableTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport { UpdateTenantUseCase as ApiCoreUpdateTenant } from \"@webiny/api-core/features/tenancy/UpdateTenant\";\nimport { UpdateTenantUseCase as TenantManagerUpdateTenant } from \"../UpdateTenant/abstractions.js\";\nimport { GetTenantByIdUseCase } from \"../GetTenantById/abstractions.js\";\nimport { TenantBeforeEnableEvent, TenantAfterEnableEvent } from \"./events.js\";\nimport { TenantPersistenceError } from \"../../domain/errors.js\";\n\nclass EnableTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private coreUpdateTenant: ApiCoreUpdateTenant.Interface,\n private tmUpdateTenant: TenantManagerUpdateTenant.Interface,\n private tmGetTenantById: GetTenantByIdUseCase.Interface\n ) {}\n\n async execute(tenantId: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Authorization checks\n if (!this.identityContext.getPermission(\"tm.tenant\")) {\n return Result.fail(\n new NotAuthorizedError({ message: \"Not authorized to enable tenants.\" })\n );\n }\n\n // Get current tenant to verify it exists\n const getTenantResult = await this.tmGetTenantById.execute(tenantId);\n if (getTenantResult.isFail()) {\n return Result.fail(getTenantResult.error);\n }\n\n const tenant = getTenantResult.value;\n\n // Publish before event\n await this.eventPublisher.publish(new TenantBeforeEnableEvent({ tenant }));\n\n // Update api-core tenant first\n const apiCoreResult = await this.coreUpdateTenant.execute(tenantId, {\n status: \"enabled\"\n });\n\n if (apiCoreResult.isFail()) {\n return Result.fail(\n new TenantPersistenceError(\n new Error(`Failed to update api-core tenant: ${apiCoreResult.error}`)\n )\n );\n }\n\n // Update tenant-manager CMS entry\n const updatedTenantResult = await this.tmUpdateTenant.execute(tenantId, {\n status: \"enabled\"\n });\n\n if (updatedTenantResult.isFail()) {\n return Result.fail(updatedTenantResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new TenantAfterEnableEvent({ tenant: updatedTenantResult.value })\n );\n\n return Result.ok();\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: EnableTenantUseCase,\n dependencies: [\n IdentityContext,\n EventPublisher,\n ApiCoreUpdateTenant,\n TenantManagerUpdateTenant,\n GetTenantByIdUseCase\n ]\n});\n"],"names":["EnableTenantUseCase","identityContext","eventPublisher","coreUpdateTenant","tmUpdateTenant","tmGetTenantById","tenantId","Result","NotAuthorizedError","getTenantResult","tenant","TenantBeforeEnableEvent","apiCoreResult","TenantPersistenceError","Error","updatedTenantResult","TenantAfterEnableEvent","UseCaseAbstraction","IdentityContext","EventPublisher","ApiCoreUpdateTenant","TenantManagerUpdateTenant","GetTenantByIdUseCase"],"mappings":";;;;;;;;;;AAWA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,gBAA+C,EAC/CC,cAAmD,EACnDC,eAA+C,CACzD;aALUJ,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,gBAAgB,GAAhBA;aACAC,cAAc,GAAdA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QAAQC,QAAgB,EAAmD;QAE7E,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,cACpC,OAAOC,OAAO,IAAI,CACd,IAAIC,mBAAmB;YAAE,SAAS;QAAoC;QAK9E,MAAMC,kBAAkB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACH;QAC3D,IAAIG,gBAAgB,MAAM,IACtB,OAAOF,OAAO,IAAI,CAACE,gBAAgB,KAAK;QAG5C,MAAMC,SAASD,gBAAgB,KAAK;QAGpC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIE,wBAAwB;YAAED;QAAO;QAGvE,MAAME,gBAAgB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAACN,UAAU;YAChE,QAAQ;QACZ;QAEA,IAAIM,cAAc,MAAM,IACpB,OAAOL,OAAO,IAAI,CACd,IAAIM,uBACA,IAAIC,MAAM,CAAC,kCAAkC,EAAEF,cAAc,KAAK,EAAE;QAMhF,MAAMG,sBAAsB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACT,UAAU;YACpE,QAAQ;QACZ;QAEA,IAAIS,oBAAoB,MAAM,IAC1B,OAAOR,OAAO,IAAI,CAACQ,oBAAoB,KAAK;QAIhD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,uBAAuB;YAAE,QAAQD,oBAAoB,KAAK;QAAC;QAGnE,OAAOR,OAAO,EAAE;IACpB;AACJ;AAEA,yCAAeU,oBAAAA,oBAAuC,CAAC;IACnD,gBAAgBjB;IAChB,cAAc;QACVkB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,4 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- export const EnableTenantUseCase = createAbstraction("TenantManager/EnableTenantUseCase");
2
+ const EnableTenantUseCase = createAbstraction("TenantManager/EnableTenantUseCase");
3
+ export { EnableTenantUseCase };
3
4
 
4
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","EnableTenantUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\n\nexport interface IEnableTenantUseCase {\n execute(tenantId: string): Promise<Result<void, EnableTenantUseCase.Error>>;\n}\n\nexport interface IEnableTenantUseCaseErrors {\n notAuthorized: NotAuthorizedError;\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFound: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IEnableTenantUseCaseErrors[keyof IEnableTenantUseCaseErrors];\n\nexport const EnableTenantUseCase = createAbstraction<IEnableTenantUseCase>(\n \"TenantManager/EnableTenantUseCase\"\n);\n\nexport namespace EnableTenantUseCase {\n export type Interface = IEnableTenantUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAsBvD,OAAO,MAAMC,mBAAmB,GAAGD,iBAAiB,CAChD,mCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/EnableTenant/abstractions.js","sources":["../../../../src/api/features/EnableTenant/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\n\nexport interface IEnableTenantUseCase {\n execute(tenantId: string): Promise<Result<void, EnableTenantUseCase.Error>>;\n}\n\nexport interface IEnableTenantUseCaseErrors {\n notAuthorized: NotAuthorizedError;\n notFound: TenantNotFoundError;\n persistence: TenantPersistenceError;\n modelNotFound: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IEnableTenantUseCaseErrors[keyof IEnableTenantUseCaseErrors];\n\nexport const EnableTenantUseCase = createAbstraction<IEnableTenantUseCase>(\n \"TenantManager/EnableTenantUseCase\"\n);\n\nexport namespace EnableTenantUseCase {\n export type Interface = IEnableTenantUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["EnableTenantUseCase","createAbstraction"],"mappings":";AAsBO,MAAMA,sBAAsBC,kBAC/B"}
@@ -1,18 +1,23 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
2
  import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
- export class TenantBeforeEnableEvent extends DomainEvent {
4
- eventType = "tenant.beforeEnable";
5
- getHandlerAbstraction() {
6
- return TenantBeforeEnableEventHandler;
7
- }
3
+ class TenantBeforeEnableEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return TenantBeforeEnableEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "tenant.beforeEnable";
9
+ }
8
10
  }
9
- export const TenantBeforeEnableEventHandler = createAbstraction("TenantManager/TenantBeforeEnableEventHandler");
10
- export class TenantAfterEnableEvent extends DomainEvent {
11
- eventType = "tenant.afterEnable";
12
- getHandlerAbstraction() {
13
- return TenantAfterEnableEventHandler;
14
- }
11
+ const TenantBeforeEnableEventHandler = createAbstraction("TenantManager/TenantBeforeEnableEventHandler");
12
+ class TenantAfterEnableEvent extends DomainEvent {
13
+ getHandlerAbstraction() {
14
+ return TenantAfterEnableEventHandler;
15
+ }
16
+ constructor(...args){
17
+ super(...args), this.eventType = "tenant.afterEnable";
18
+ }
15
19
  }
16
- export const TenantAfterEnableEventHandler = createAbstraction("TenantManager/TenantAfterEnableEventHandler");
20
+ const TenantAfterEnableEventHandler = createAbstraction("TenantManager/TenantAfterEnableEventHandler");
21
+ export { TenantAfterEnableEvent, TenantAfterEnableEventHandler, TenantBeforeEnableEvent, TenantBeforeEnableEventHandler };
17
22
 
18
23
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","TenantBeforeEnableEvent","eventType","getHandlerAbstraction","TenantBeforeEnableEventHandler","TenantAfterEnableEvent","TenantAfterEnableEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Tenant } from \"~/shared/Tenant.js\";\n\nexport interface TenantBeforeEnablePayload {\n tenant: Tenant;\n}\n\nexport interface TenantAfterEnablePayload {\n tenant: Tenant;\n}\n\nexport class TenantBeforeEnableEvent extends DomainEvent<TenantBeforeEnablePayload> {\n eventType = \"tenant.beforeEnable\" as const;\n\n getHandlerAbstraction() {\n return TenantBeforeEnableEventHandler;\n }\n}\n\nexport const TenantBeforeEnableEventHandler = createAbstraction<\n IEventHandler<TenantBeforeEnableEvent>\n>(\"TenantManager/TenantBeforeEnableEventHandler\");\n\nexport namespace TenantBeforeEnableEventHandler {\n export type Interface = IEventHandler<TenantBeforeEnableEvent>;\n export type Event = TenantBeforeEnableEvent;\n}\n\nexport class TenantAfterEnableEvent extends DomainEvent<TenantAfterEnablePayload> {\n eventType = \"tenant.afterEnable\" as const;\n\n getHandlerAbstraction() {\n return TenantAfterEnableEventHandler;\n }\n}\n\nexport const TenantAfterEnableEventHandler = createAbstraction<\n IEventHandler<TenantAfterEnableEvent>\n>(\"TenantManager/TenantAfterEnableEventHandler\");\n\nexport namespace TenantAfterEnableEventHandler {\n export type Interface = IEventHandler<TenantAfterEnableEvent>;\n export type Event = TenantAfterEnableEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;AAY/E,OAAO,MAAMC,uBAAuB,SAASD,WAAW,CAA4B;EAChFE,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,8BAA8B;EACzC;AACJ;AAEA,OAAO,MAAMA,8BAA8B,GAAGL,iBAAiB,CAE7D,8CAA8C,CAAC;AAOjD,OAAO,MAAMM,sBAAsB,SAASL,WAAW,CAA2B;EAC9EE,SAAS,GAAG,oBAAoB;EAEhCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,6BAA6B;EACxC;AACJ;AAEA,OAAO,MAAMA,6BAA6B,GAAGP,iBAAiB,CAE5D,6CAA6C,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/EnableTenant/events.js","sources":["../../../../src/api/features/EnableTenant/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Tenant } from \"~/shared/Tenant.js\";\n\nexport interface TenantBeforeEnablePayload {\n tenant: Tenant;\n}\n\nexport interface TenantAfterEnablePayload {\n tenant: Tenant;\n}\n\nexport class TenantBeforeEnableEvent extends DomainEvent<TenantBeforeEnablePayload> {\n eventType = \"tenant.beforeEnable\" as const;\n\n getHandlerAbstraction() {\n return TenantBeforeEnableEventHandler;\n }\n}\n\nexport const TenantBeforeEnableEventHandler = createAbstraction<\n IEventHandler<TenantBeforeEnableEvent>\n>(\"TenantManager/TenantBeforeEnableEventHandler\");\n\nexport namespace TenantBeforeEnableEventHandler {\n export type Interface = IEventHandler<TenantBeforeEnableEvent>;\n export type Event = TenantBeforeEnableEvent;\n}\n\nexport class TenantAfterEnableEvent extends DomainEvent<TenantAfterEnablePayload> {\n eventType = \"tenant.afterEnable\" as const;\n\n getHandlerAbstraction() {\n return TenantAfterEnableEventHandler;\n }\n}\n\nexport const TenantAfterEnableEventHandler = createAbstraction<\n IEventHandler<TenantAfterEnableEvent>\n>(\"TenantManager/TenantAfterEnableEventHandler\");\n\nexport namespace TenantAfterEnableEventHandler {\n export type Interface = IEventHandler<TenantAfterEnableEvent>;\n export type Event = TenantAfterEnableEvent;\n}\n"],"names":["TenantBeforeEnableEvent","DomainEvent","TenantBeforeEnableEventHandler","createAbstraction","TenantAfterEnableEvent","TenantAfterEnableEventHandler"],"mappings":";;AAaO,MAAMA,gCAAgCC;IAGzC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,iCAAiCC,kBAE5C;AAOK,MAAMC,+BAA+BH;IAGxC,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,gCAAgCF,kBAE3C"}
@@ -1,11 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import EnableTenantUseCase from "./EnableTenantUseCase.js";
3
- export const EnableTenantFeature = createFeature({
4
- name: "EnableTenant",
5
- register(container) {
6
- // Register use case (transient scope)
7
- container.register(EnableTenantUseCase);
8
- }
3
+ const EnableTenantFeature = createFeature({
4
+ name: "EnableTenant",
5
+ register (container) {
6
+ container.register(EnableTenantUseCase);
7
+ }
9
8
  });
9
+ export { EnableTenantFeature };
10
10
 
11
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","EnableTenantUseCase","EnableTenantFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport EnableTenantUseCase from \"./EnableTenantUseCase.js\";\n\nexport const EnableTenantFeature = createFeature({\n name: \"EnableTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(EnableTenantUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,mBAAmB;AAE1B,OAAO,MAAMC,mBAAmB,GAAGF,aAAa,CAAC;EAC7CG,IAAI,EAAE,cAAc;EACpBC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACH,mBAAmB,CAAC;EAC3C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/EnableTenant/feature.js","sources":["../../../../src/api/features/EnableTenant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport EnableTenantUseCase from \"./EnableTenantUseCase.js\";\n\nexport const EnableTenantFeature = createFeature({\n name: \"EnableTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(EnableTenantUseCase);\n }\n});\n"],"names":["EnableTenantFeature","createFeature","container","EnableTenantUseCase"],"mappings":";;AAGO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,35 +1,32 @@
1
1
  import { GetTenantByIdUseCase } from "../GetTenantById/abstractions.js";
2
- import { GetCurrentTenantUseCase as UseCaseAbstraction } from "./abstractions.js";
2
+ import { GetCurrentTenantUseCase } from "./abstractions.js";
3
3
  import { TenantContext } from "@webiny/api-core/exports/api/tenancy.js";
4
4
  import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
5
5
  import { Result } from "@webiny/feature/api";
6
6
  import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/index.js";
7
- class GetCurrentTenantUseCase {
8
- constructor(tenantContext, identityContext, getTenantByIdUseCase) {
9
- this.tenantContext = tenantContext;
10
- this.identityContext = identityContext;
11
- this.getTenantByIdUseCase = getTenantByIdUseCase;
12
- }
13
- async execute() {
14
- const identity = this.identityContext.getIdentity();
15
- if (identity.isAnonymous()) {
16
- return Result.fail(new NotAuthorizedError());
7
+ class GetCurrentTenantUseCase_GetCurrentTenantUseCase {
8
+ constructor(tenantContext, identityContext, getTenantByIdUseCase){
9
+ this.tenantContext = tenantContext;
10
+ this.identityContext = identityContext;
11
+ this.getTenantByIdUseCase = getTenantByIdUseCase;
17
12
  }
18
-
19
- // Get the current tenant from context
20
- const currentTenant = this.tenantContext.getTenant();
21
- const result = await this.identityContext.withoutAuthorization(() => {
22
- return this.getTenantByIdUseCase.execute(currentTenant.id);
23
- });
24
- if (result.isFail()) {
25
- return Result.fail(result.error);
13
+ async execute() {
14
+ const identity = this.identityContext.getIdentity();
15
+ if (identity.isAnonymous()) return Result.fail(new NotAuthorizedError());
16
+ const currentTenant = this.tenantContext.getTenant();
17
+ const result = await this.identityContext.withoutAuthorization(()=>this.getTenantByIdUseCase.execute(currentTenant.id));
18
+ if (result.isFail()) return Result.fail(result.error);
19
+ return Result.ok(result.value);
26
20
  }
27
- return Result.ok(result.value);
28
- }
29
21
  }
30
- export default UseCaseAbstraction.createImplementation({
31
- implementation: GetCurrentTenantUseCase,
32
- dependencies: [TenantContext, IdentityContext, GetTenantByIdUseCase]
22
+ const GetCurrentTenant_GetCurrentTenantUseCase = GetCurrentTenantUseCase.createImplementation({
23
+ implementation: GetCurrentTenantUseCase_GetCurrentTenantUseCase,
24
+ dependencies: [
25
+ TenantContext,
26
+ IdentityContext,
27
+ GetTenantByIdUseCase
28
+ ]
33
29
  });
30
+ export default GetCurrentTenant_GetCurrentTenantUseCase;
34
31
 
35
32
  //# sourceMappingURL=GetCurrentTenantUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GetTenantByIdUseCase","GetCurrentTenantUseCase","UseCaseAbstraction","TenantContext","IdentityContext","Result","NotAuthorizedError","constructor","tenantContext","identityContext","getTenantByIdUseCase","execute","identity","getIdentity","isAnonymous","fail","currentTenant","getTenant","result","withoutAuthorization","id","isFail","error","ok","value","createImplementation","implementation","dependencies"],"sources":["GetCurrentTenantUseCase.ts"],"sourcesContent":["import { Tenant } from \"~/shared/Tenant.js\";\nimport { GetTenantByIdUseCase } from \"../GetTenantById/abstractions.js\";\nimport { GetCurrentTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/exports/api/tenancy.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\n\nclass GetCurrentTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private getTenantByIdUseCase: GetTenantByIdUseCase.Interface\n ) {}\n\n async execute(): Promise<Result<Tenant, UseCaseAbstraction.Error>> {\n const identity = this.identityContext.getIdentity();\n if (identity.isAnonymous()) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get the current tenant from context\n const currentTenant = this.tenantContext.getTenant();\n\n const result = await this.identityContext.withoutAuthorization(() => {\n return this.getTenantByIdUseCase.execute(currentTenant.id);\n });\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: GetCurrentTenantUseCase,\n dependencies: [TenantContext, IdentityContext, GetTenantByIdUseCase]\n});\n"],"mappings":"AACA,SAASA,oBAAoB;AAC7B,SAASC,uBAAuB,IAAIC,kBAAkB;AACtD,SAASC,aAAa,QAAQ,yCAAyC;AACvE,SAASC,eAAe,QAAQ,0CAA0C;AAC1E,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,kBAAkB,QAAQ,oDAAoD;AAEvF,MAAML,uBAAuB,CAAyC;EAClEM,WAAWA,CACCC,aAAsC,EACtCC,eAA0C,EAC1CC,oBAAoD,EAC9D;IAAA,KAHUF,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,oBAAoD,GAApDA,oBAAoD;EAC7D;EAEH,MAAMC,OAAOA,CAAA,EAAsD;IAC/D,MAAMC,QAAQ,GAAG,IAAI,CAACH,eAAe,CAACI,WAAW,CAAC,CAAC;IACnD,IAAID,QAAQ,CAACE,WAAW,CAAC,CAAC,EAAE;MACxB,OAAOT,MAAM,CAACU,IAAI,CAAC,IAAIT,kBAAkB,CAAC,CAAC,CAAC;IAChD;;IAEA;IACA,MAAMU,aAAa,GAAG,IAAI,CAACR,aAAa,CAACS,SAAS,CAAC,CAAC;IAEpD,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACT,eAAe,CAACU,oBAAoB,CAAC,MAAM;MACjE,OAAO,IAAI,CAACT,oBAAoB,CAACC,OAAO,CAACK,aAAa,CAACI,EAAE,CAAC;IAC9D,CAAC,CAAC;IAEF,IAAIF,MAAM,CAACG,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOhB,MAAM,CAACU,IAAI,CAACG,MAAM,CAACI,KAAK,CAAC;IACpC;IAEA,OAAOjB,MAAM,CAACkB,EAAE,CAACL,MAAM,CAACM,KAAK,CAAC;EAClC;AACJ;AAEA,eAAetB,kBAAkB,CAACuB,oBAAoB,CAAC;EACnDC,cAAc,EAAEzB,uBAAuB;EACvC0B,YAAY,EAAE,CAACxB,aAAa,EAAEC,eAAe,EAAEJ,oBAAoB;AACvE,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetCurrentTenant/GetCurrentTenantUseCase.js","sources":["../../../../src/api/features/GetCurrentTenant/GetCurrentTenantUseCase.ts"],"sourcesContent":["import { Tenant } from \"~/shared/Tenant.js\";\nimport { GetTenantByIdUseCase } from \"../GetTenantById/abstractions.js\";\nimport { GetCurrentTenantUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/exports/api/tenancy.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\n\nclass GetCurrentTenantUseCase implements UseCaseAbstraction.Interface {\n constructor(\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private getTenantByIdUseCase: GetTenantByIdUseCase.Interface\n ) {}\n\n async execute(): Promise<Result<Tenant, UseCaseAbstraction.Error>> {\n const identity = this.identityContext.getIdentity();\n if (identity.isAnonymous()) {\n return Result.fail(new NotAuthorizedError());\n }\n\n // Get the current tenant from context\n const currentTenant = this.tenantContext.getTenant();\n\n const result = await this.identityContext.withoutAuthorization(() => {\n return this.getTenantByIdUseCase.execute(currentTenant.id);\n });\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport default UseCaseAbstraction.createImplementation({\n implementation: GetCurrentTenantUseCase,\n dependencies: [TenantContext, IdentityContext, GetTenantByIdUseCase]\n});\n"],"names":["GetCurrentTenantUseCase","tenantContext","identityContext","getTenantByIdUseCase","identity","Result","NotAuthorizedError","currentTenant","result","UseCaseAbstraction","TenantContext","IdentityContext","GetTenantByIdUseCase"],"mappings":";;;;;;AAQA,MAAMA;IACF,YACYC,aAAsC,EACtCC,eAA0C,EAC1CC,oBAAoD,CAC9D;aAHUF,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,oBAAoB,GAApBA;IACT;IAEH,MAAM,UAA6D;QAC/D,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,IAAIA,SAAS,WAAW,IACpB,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,gBAAgB,IAAI,CAAC,aAAa,CAAC,SAAS;QAElD,MAAMC,SAAS,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IACpD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAACD,cAAc,EAAE;QAG7D,IAAIC,OAAO,MAAM,IACb,OAAOH,OAAO,IAAI,CAACG,OAAO,KAAK;QAGnC,OAAOH,OAAO,EAAE,CAACG,OAAO,KAAK;IACjC;AACJ;AAEA,iDAAeC,wBAAAA,oBAAuC,CAAC;IACnD,gBAAgBT;IAChB,cAAc;QAACU;QAAeC;QAAiBC;KAAqB;AACxE"}
@@ -1,10 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * GetCurrentTenant Use Case
5
- * Gets the tenant associated with the current tenant context
6
- */
7
-
8
- export const GetCurrentTenantUseCase = createAbstraction("TenantManager/GetCurrentTenantUseCase");
2
+ const GetCurrentTenantUseCase = createAbstraction("TenantManager/GetCurrentTenantUseCase");
3
+ export { GetCurrentTenantUseCase };
9
4
 
10
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetCurrentTenantUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport type { Tenant } from \"~/shared/Tenant.js\";\nimport type {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\n\n/**\n * GetCurrentTenant Use Case\n * Gets the tenant associated with the current tenant context\n */\nexport interface IGetCurrentTenantUseCase {\n execute(): Promise<Result<Tenant, UseCaseError>>;\n}\n\nexport interface IGetCurrentTenantUseCaseErrors {\n notFound: TenantNotFoundError;\n notAuthorized: NotAuthorizedError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IGetCurrentTenantUseCaseErrors[keyof IGetCurrentTenantUseCaseErrors];\n\nexport const GetCurrentTenantUseCase = createAbstraction<IGetCurrentTenantUseCase>(\n \"TenantManager/GetCurrentTenantUseCase\"\n);\n\nexport namespace GetCurrentTenantUseCase {\n export type Interface = IGetCurrentTenantUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;AACA;AACA;AACA;;AAcA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,uCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetCurrentTenant/abstractions.js","sources":["../../../../src/api/features/GetCurrentTenant/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/errors.js\";\nimport type { Tenant } from \"~/shared/Tenant.js\";\nimport type {\n TenantModelNotFoundError,\n TenantNotFoundError,\n TenantPersistenceError\n} from \"../../domain/errors.js\";\n\n/**\n * GetCurrentTenant Use Case\n * Gets the tenant associated with the current tenant context\n */\nexport interface IGetCurrentTenantUseCase {\n execute(): Promise<Result<Tenant, UseCaseError>>;\n}\n\nexport interface IGetCurrentTenantUseCaseErrors {\n notFound: TenantNotFoundError;\n notAuthorized: NotAuthorizedError;\n persistence: TenantPersistenceError;\n modelNotFoundError: TenantModelNotFoundError;\n}\n\ntype UseCaseError = IGetCurrentTenantUseCaseErrors[keyof IGetCurrentTenantUseCaseErrors];\n\nexport const GetCurrentTenantUseCase = createAbstraction<IGetCurrentTenantUseCase>(\n \"TenantManager/GetCurrentTenantUseCase\"\n);\n\nexport namespace GetCurrentTenantUseCase {\n export type Interface = IGetCurrentTenantUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["GetCurrentTenantUseCase","createAbstraction"],"mappings":";AA2BO,MAAMA,0BAA0BC,kBACnC"}
@@ -1,11 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import GetCurrentTenantUseCase from "./GetCurrentTenantUseCase.js";
3
- export const GetCurrentTenantFeature = createFeature({
4
- name: "GetCurrentTenant",
5
- register(container) {
6
- // Register use case (transient scope)
7
- container.register(GetCurrentTenantUseCase);
8
- }
3
+ const GetCurrentTenantFeature = createFeature({
4
+ name: "GetCurrentTenant",
5
+ register (container) {
6
+ container.register(GetCurrentTenantUseCase);
7
+ }
9
8
  });
9
+ export { GetCurrentTenantFeature };
10
10
 
11
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","GetCurrentTenantUseCase","GetCurrentTenantFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport GetCurrentTenantUseCase from \"./GetCurrentTenantUseCase.js\";\n\nexport const GetCurrentTenantFeature = createFeature({\n name: \"GetCurrentTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(GetCurrentTenantUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,OAAOC,uBAAuB;AAE9B,OAAO,MAAMC,uBAAuB,GAAGF,aAAa,CAAC;EACjDG,IAAI,EAAE,kBAAkB;EACxBC,QAAQA,CAACC,SAAS,EAAE;IAChB;IACAA,SAAS,CAACD,QAAQ,CAACH,uBAAuB,CAAC;EAC/C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"api/features/GetCurrentTenant/feature.js","sources":["../../../../src/api/features/GetCurrentTenant/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport GetCurrentTenantUseCase from \"./GetCurrentTenantUseCase.js\";\n\nexport const GetCurrentTenantFeature = createFeature({\n name: \"GetCurrentTenant\",\n register(container) {\n // Register use case (transient scope)\n container.register(GetCurrentTenantUseCase);\n }\n});\n"],"names":["GetCurrentTenantFeature","createFeature","container","GetCurrentTenantUseCase"],"mappings":";;AAGO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QAEdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -2,48 +2,43 @@ import { Result } from "@webiny/feature/api";
2
2
  import { Tenant } from "../../../shared/Tenant.js";
3
3
  import { TENANT_MODEL_ID } from "../../../shared/constants.js";
4
4
  import { TenantModelNotFoundError, TenantNotFoundError, TenantPersistenceError } from "../../domain/errors.js";
5
- import { GetTenantByIdRepository as RepositoryAbstraction } from "./abstractions.js";
5
+ import { GetTenantByIdRepository } from "./abstractions.js";
6
6
  import { TenantContext } from "@webiny/api-core/exports/api/tenancy.js";
7
7
  import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/abstractions.js";
8
8
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/abstractions.js";
9
9
  import { EntryId } from "@webiny/api-headless-cms/domain/contentEntry/EntryId.js";
10
- class GetTenantByIdRepository {
11
- constructor(tenantContext, getModelUseCase, getEntryUseCase) {
12
- this.tenantContext = tenantContext;
13
- this.getModelUseCase = getModelUseCase;
14
- this.getEntryUseCase = getEntryUseCase;
15
- }
16
- async execute(id) {
17
- try {
18
- const entryId = EntryId.from(id);
19
-
20
- // Get the tenant model
21
- const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);
22
- if (modelResult.isFail()) {
23
- return Result.fail(new TenantModelNotFoundError());
24
- }
25
-
26
- // Get the tenant entry
27
- const entryResult = await this.tenantContext.withRootTenant(() => {
28
- return this.getEntryUseCase.execute(modelResult.value, entryId.toString());
29
- });
30
- if (entryResult.isFail()) {
31
- return Result.fail(new TenantNotFoundError(id));
32
- }
33
- const tenantEntry = entryResult.value;
34
- const tenantDto = {
35
- id: tenantEntry.entryId,
36
- values: tenantEntry.values
37
- };
38
- return Result.ok(Tenant.from(tenantDto));
39
- } catch (error) {
40
- return Result.fail(new TenantPersistenceError(error));
10
+ class GetTenantByIdRepository_GetTenantByIdRepository {
11
+ constructor(tenantContext, getModelUseCase, getEntryUseCase){
12
+ this.tenantContext = tenantContext;
13
+ this.getModelUseCase = getModelUseCase;
14
+ this.getEntryUseCase = getEntryUseCase;
15
+ }
16
+ async execute(id) {
17
+ try {
18
+ const entryId = EntryId.from(id);
19
+ const modelResult = await this.getModelUseCase.execute(TENANT_MODEL_ID);
20
+ if (modelResult.isFail()) return Result.fail(new TenantModelNotFoundError());
21
+ const entryResult = await this.tenantContext.withRootTenant(()=>this.getEntryUseCase.execute(modelResult.value, entryId.toString()));
22
+ if (entryResult.isFail()) return Result.fail(new TenantNotFoundError(id));
23
+ const tenantEntry = entryResult.value;
24
+ const tenantDto = {
25
+ id: tenantEntry.entryId,
26
+ values: tenantEntry.values
27
+ };
28
+ return Result.ok(Tenant.from(tenantDto));
29
+ } catch (error) {
30
+ return Result.fail(new TenantPersistenceError(error));
31
+ }
41
32
  }
42
- }
43
33
  }
44
- export default RepositoryAbstraction.createImplementation({
45
- implementation: GetTenantByIdRepository,
46
- dependencies: [TenantContext, GetModelUseCase, GetEntryByIdUseCase]
34
+ const GetTenantById_GetTenantByIdRepository = GetTenantByIdRepository.createImplementation({
35
+ implementation: GetTenantByIdRepository_GetTenantByIdRepository,
36
+ dependencies: [
37
+ TenantContext,
38
+ GetModelUseCase,
39
+ GetEntryByIdUseCase
40
+ ]
47
41
  });
42
+ export default GetTenantById_GetTenantByIdRepository;
48
43
 
49
44
  //# sourceMappingURL=GetTenantByIdRepository.js.map