@webiny/tenant-manager 0.0.0-unstable.0d717d18dd

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 (275) hide show
  1. package/LICENSE +36 -0
  2. package/README.md +11 -0
  3. package/TenantManager.d.ts +2 -0
  4. package/TenantManager.js +11 -0
  5. package/TenantManager.js.map +1 -0
  6. package/admin/CurrentTenant/CurrentTenant.d.ts +10 -0
  7. package/admin/CurrentTenant/CurrentTenant.js +25 -0
  8. package/admin/CurrentTenant/CurrentTenant.js.map +1 -0
  9. package/admin/CurrentTenant/CurrentTenantGateway.d.ts +12 -0
  10. package/admin/CurrentTenant/CurrentTenantGateway.js +43 -0
  11. package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -0
  12. package/admin/CurrentTenant/CurrentTenantPresenter.d.ts +12 -0
  13. package/admin/CurrentTenant/CurrentTenantPresenter.js +33 -0
  14. package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -0
  15. package/admin/CurrentTenant/CurrentTenantRepository.d.ts +15 -0
  16. package/admin/CurrentTenant/CurrentTenantRepository.js +38 -0
  17. package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -0
  18. package/admin/CurrentTenant/abstractions.d.ts +31 -0
  19. package/admin/CurrentTenant/abstractions.js +7 -0
  20. package/admin/CurrentTenant/abstractions.js.map +1 -0
  21. package/admin/CurrentTenant/feature.d.ts +3 -0
  22. package/admin/CurrentTenant/feature.js +21 -0
  23. package/admin/CurrentTenant/feature.js.map +1 -0
  24. package/admin/CurrentTenant/useCurrentTenant.d.ts +4 -0
  25. package/admin/CurrentTenant/useCurrentTenant.js +18 -0
  26. package/admin/CurrentTenant/useCurrentTenant.js.map +1 -0
  27. package/admin/CurrentTenantProvider.d.ts +2 -0
  28. package/admin/CurrentTenantProvider.js +9 -0
  29. package/admin/CurrentTenantProvider.js.map +1 -0
  30. package/admin/DisableTenant/DisableTenantGateway.d.ts +11 -0
  31. package/admin/DisableTenant/DisableTenantGateway.js +42 -0
  32. package/admin/DisableTenant/DisableTenantGateway.js.map +1 -0
  33. package/admin/DisableTenant/DisableTenantRepository.d.ts +12 -0
  34. package/admin/DisableTenant/DisableTenantRepository.js +33 -0
  35. package/admin/DisableTenant/DisableTenantRepository.js.map +1 -0
  36. package/admin/DisableTenant/DisableTenantUseCase.d.ts +10 -0
  37. package/admin/DisableTenant/DisableTenantUseCase.js +18 -0
  38. package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -0
  39. package/admin/DisableTenant/abstractions.d.ts +21 -0
  40. package/admin/DisableTenant/abstractions.js +7 -0
  41. package/admin/DisableTenant/abstractions.js.map +1 -0
  42. package/admin/DisableTenant/feature.d.ts +3 -0
  43. package/admin/DisableTenant/feature.js +21 -0
  44. package/admin/DisableTenant/feature.js.map +1 -0
  45. package/admin/DisableTenant/index.d.ts +2 -0
  46. package/admin/DisableTenant/index.js +2 -0
  47. package/admin/DisableTenant/useDisableTenant.d.ts +4 -0
  48. package/admin/DisableTenant/useDisableTenant.js +18 -0
  49. package/admin/DisableTenant/useDisableTenant.js.map +1 -0
  50. package/admin/EnableTenant/EnableTenantGateway.d.ts +11 -0
  51. package/admin/EnableTenant/EnableTenantGateway.js +42 -0
  52. package/admin/EnableTenant/EnableTenantGateway.js.map +1 -0
  53. package/admin/EnableTenant/EnableTenantRepository.d.ts +12 -0
  54. package/admin/EnableTenant/EnableTenantRepository.js +33 -0
  55. package/admin/EnableTenant/EnableTenantRepository.js.map +1 -0
  56. package/admin/EnableTenant/EnableTenantUseCase.d.ts +10 -0
  57. package/admin/EnableTenant/EnableTenantUseCase.js +18 -0
  58. package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -0
  59. package/admin/EnableTenant/abstractions.d.ts +21 -0
  60. package/admin/EnableTenant/abstractions.js +7 -0
  61. package/admin/EnableTenant/abstractions.js.map +1 -0
  62. package/admin/EnableTenant/feature.d.ts +3 -0
  63. package/admin/EnableTenant/feature.js +21 -0
  64. package/admin/EnableTenant/feature.js.map +1 -0
  65. package/admin/EnableTenant/index.d.ts +2 -0
  66. package/admin/EnableTenant/index.js +2 -0
  67. package/admin/EnableTenant/useEnableTenant.d.ts +4 -0
  68. package/admin/EnableTenant/useEnableTenant.js +24 -0
  69. package/admin/EnableTenant/useEnableTenant.js.map +1 -0
  70. package/admin/Extension.d.ts +2 -0
  71. package/admin/Extension.js +49 -0
  72. package/admin/Extension.js.map +1 -0
  73. package/admin/InstallTenant/InstallTenantGateway.d.ts +11 -0
  74. package/admin/InstallTenant/InstallTenantGateway.js +42 -0
  75. package/admin/InstallTenant/InstallTenantGateway.js.map +1 -0
  76. package/admin/InstallTenant/InstallTenantRepository.d.ts +12 -0
  77. package/admin/InstallTenant/InstallTenantRepository.js +34 -0
  78. package/admin/InstallTenant/InstallTenantRepository.js.map +1 -0
  79. package/admin/InstallTenant/InstallTenantUseCase.d.ts +10 -0
  80. package/admin/InstallTenant/InstallTenantUseCase.js +18 -0
  81. package/admin/InstallTenant/InstallTenantUseCase.js.map +1 -0
  82. package/admin/InstallTenant/abstractions.d.ts +21 -0
  83. package/admin/InstallTenant/abstractions.js +7 -0
  84. package/admin/InstallTenant/abstractions.js.map +1 -0
  85. package/admin/InstallTenant/feature.d.ts +3 -0
  86. package/admin/InstallTenant/feature.js +21 -0
  87. package/admin/InstallTenant/feature.js.map +1 -0
  88. package/admin/InstallTenant/index.d.ts +2 -0
  89. package/admin/InstallTenant/index.js +2 -0
  90. package/admin/InstallTenant/useInstallTenant.d.ts +4 -0
  91. package/admin/InstallTenant/useInstallTenant.js +24 -0
  92. package/admin/InstallTenant/useInstallTenant.js.map +1 -0
  93. package/admin/IsRootTenant.d.ts +13 -0
  94. package/admin/IsRootTenant.js +19 -0
  95. package/admin/IsRootTenant.js.map +1 -0
  96. package/admin/SecurityPermission.d.ts +2 -0
  97. package/admin/SecurityPermission.js +15 -0
  98. package/admin/SecurityPermission.js.map +1 -0
  99. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.d.ts +8 -0
  100. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +41 -0
  101. package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -0
  102. package/admin/TenantEntryList/EnableTenant/EnableTenant.d.ts +7 -0
  103. package/admin/TenantEntryList/EnableTenant/EnableTenant.js +15 -0
  104. package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -0
  105. package/admin/TenantEntryList/EnableTenant/useEnableTenant.d.ts +5 -0
  106. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +31 -0
  107. package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -0
  108. package/admin/TenantEntryList/FolderNameCell.d.ts +7 -0
  109. package/admin/TenantEntryList/FolderNameCell.js +24 -0
  110. package/admin/TenantEntryList/FolderNameCell.js.map +1 -0
  111. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.d.ts +7 -0
  112. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +15 -0
  113. package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -0
  114. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.d.ts +5 -0
  115. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +31 -0
  116. package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -0
  117. package/admin/TenantEntryList/ManageTenant.d.ts +7 -0
  118. package/admin/TenantEntryList/ManageTenant.js +19 -0
  119. package/admin/TenantEntryList/ManageTenant.js.map +1 -0
  120. package/admin/TenantEntryList/TenantCell.d.ts +2 -0
  121. package/admin/TenantEntryList/TenantCell.js +24 -0
  122. package/admin/TenantEntryList/TenantCell.js.map +1 -0
  123. package/admin/TenantEntryList/TenantNameCell.d.ts +2 -0
  124. package/admin/TenantEntryList/TenantNameCell.js +51 -0
  125. package/admin/TenantEntryList/TenantNameCell.js.map +1 -0
  126. package/admin/TenantEntryList.d.ts +2 -0
  127. package/admin/TenantEntryList.js +59 -0
  128. package/admin/TenantEntryList.js.map +1 -0
  129. package/admin/TenantSelector.d.ts +2 -0
  130. package/admin/TenantSelector.js +35 -0
  131. package/admin/TenantSelector.js.map +1 -0
  132. package/admin/domain/permissionsSchema.d.ts +4 -0
  133. package/admin/domain/permissionsSchema.js +8 -0
  134. package/admin/domain/permissionsSchema.js.map +1 -0
  135. package/admin/features/permissions/abstractions.d.ts +17 -0
  136. package/admin/features/permissions/abstractions.js +6 -0
  137. package/admin/features/permissions/abstractions.js.map +1 -0
  138. package/admin/features/permissions/feature.d.ts +14 -0
  139. package/admin/features/permissions/feature.js +7 -0
  140. package/admin/features/permissions/feature.js.map +1 -0
  141. package/admin/types.d.ts +7 -0
  142. package/admin/types.js +0 -0
  143. package/api/Extension.d.ts +4 -0
  144. package/api/Extension.js +39 -0
  145. package/api/Extension.js.map +1 -0
  146. package/api/domain/TenantId.d.ts +3 -0
  147. package/api/domain/TenantId.js +10 -0
  148. package/api/domain/TenantId.js.map +1 -0
  149. package/api/domain/TenantModel.d.ts +11 -0
  150. package/api/domain/TenantModel.js +68 -0
  151. package/api/domain/TenantModel.js.map +1 -0
  152. package/api/domain/TenantModelExtension.d.ts +11 -0
  153. package/api/domain/TenantModelExtension.js +5 -0
  154. package/api/domain/TenantModelExtension.js.map +1 -0
  155. package/api/domain/errors.d.ts +33 -0
  156. package/api/domain/errors.js +58 -0
  157. package/api/domain/errors.js.map +1 -0
  158. package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +8 -0
  159. package/api/features/AddCmsPermissions/AddCmsPermissions.js +48 -0
  160. package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -0
  161. package/api/features/AddCmsPermissions/feature.d.ts +4 -0
  162. package/api/features/AddCmsPermissions/feature.js +11 -0
  163. package/api/features/AddCmsPermissions/feature.js.map +1 -0
  164. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.d.ts +24 -0
  165. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +81 -0
  166. package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -0
  167. package/api/features/CreateAndInstallTenant/abstractions.d.ts +26 -0
  168. package/api/features/CreateAndInstallTenant/abstractions.js +5 -0
  169. package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -0
  170. package/api/features/CreateAndInstallTenant/feature.d.ts +4 -0
  171. package/api/features/CreateAndInstallTenant/feature.js +11 -0
  172. package/api/features/CreateAndInstallTenant/feature.js.map +1 -0
  173. package/api/features/CreateTenant/CreateTenantRepository.d.ts +15 -0
  174. package/api/features/CreateTenant/CreateTenantRepository.js +43 -0
  175. package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -0
  176. package/api/features/CreateTenant/CreateTenantUseCase.d.ts +14 -0
  177. package/api/features/CreateTenant/CreateTenantUseCase.js +40 -0
  178. package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -0
  179. package/api/features/CreateTenant/abstractions.d.ts +41 -0
  180. package/api/features/CreateTenant/abstractions.js +6 -0
  181. package/api/features/CreateTenant/abstractions.js.map +1 -0
  182. package/api/features/CreateTenant/feature.d.ts +4 -0
  183. package/api/features/CreateTenant/feature.js +13 -0
  184. package/api/features/CreateTenant/feature.js.map +1 -0
  185. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.d.ts +11 -0
  186. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +27 -0
  187. package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -0
  188. package/api/features/DeleteTenantOnEntryDelete/feature.d.ts +4 -0
  189. package/api/features/DeleteTenantOnEntryDelete/feature.js +11 -0
  190. package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -0
  191. package/api/features/DisableTenant/DisableTenantUseCase.d.ts +20 -0
  192. package/api/features/DisableTenant/DisableTenantUseCase.js +53 -0
  193. package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -0
  194. package/api/features/DisableTenant/abstractions.d.ts +19 -0
  195. package/api/features/DisableTenant/abstractions.js +5 -0
  196. package/api/features/DisableTenant/abstractions.js.map +1 -0
  197. package/api/features/DisableTenant/events.d.ts +27 -0
  198. package/api/features/DisableTenant/events.js +23 -0
  199. package/api/features/DisableTenant/events.js.map +1 -0
  200. package/api/features/DisableTenant/feature.d.ts +4 -0
  201. package/api/features/DisableTenant/feature.js +11 -0
  202. package/api/features/DisableTenant/feature.js.map +1 -0
  203. package/api/features/EnableTenant/EnableTenantUseCase.d.ts +20 -0
  204. package/api/features/EnableTenant/EnableTenantUseCase.js +55 -0
  205. package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -0
  206. package/api/features/EnableTenant/abstractions.d.ts +19 -0
  207. package/api/features/EnableTenant/abstractions.js +5 -0
  208. package/api/features/EnableTenant/abstractions.js.map +1 -0
  209. package/api/features/EnableTenant/events.d.ts +27 -0
  210. package/api/features/EnableTenant/events.js +23 -0
  211. package/api/features/EnableTenant/events.js.map +1 -0
  212. package/api/features/EnableTenant/feature.d.ts +4 -0
  213. package/api/features/EnableTenant/feature.js +11 -0
  214. package/api/features/EnableTenant/feature.js.map +1 -0
  215. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.d.ts +17 -0
  216. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +32 -0
  217. package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -0
  218. package/api/features/GetCurrentTenant/abstractions.d.ts +24 -0
  219. package/api/features/GetCurrentTenant/abstractions.js +5 -0
  220. package/api/features/GetCurrentTenant/abstractions.js.map +1 -0
  221. package/api/features/GetCurrentTenant/feature.d.ts +4 -0
  222. package/api/features/GetCurrentTenant/feature.js +11 -0
  223. package/api/features/GetCurrentTenant/feature.js.map +1 -0
  224. package/api/features/GetTenantById/GetTenantByIdRepository.d.ts +17 -0
  225. package/api/features/GetTenantById/GetTenantByIdRepository.js +44 -0
  226. package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -0
  227. package/api/features/GetTenantById/GetTenantByIdUseCase.d.ts +12 -0
  228. package/api/features/GetTenantById/GetTenantByIdUseCase.js +23 -0
  229. package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -0
  230. package/api/features/GetTenantById/abstractions.d.ts +38 -0
  231. package/api/features/GetTenantById/abstractions.js +6 -0
  232. package/api/features/GetTenantById/abstractions.js.map +1 -0
  233. package/api/features/GetTenantById/feature.d.ts +4 -0
  234. package/api/features/GetTenantById/feature.js +13 -0
  235. package/api/features/GetTenantById/feature.js.map +1 -0
  236. package/api/features/UpdateTenant/UpdateTenantRepository.d.ts +17 -0
  237. package/api/features/UpdateTenant/UpdateTenantRepository.js +51 -0
  238. package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -0
  239. package/api/features/UpdateTenant/UpdateTenantUseCase.d.ts +12 -0
  240. package/api/features/UpdateTenant/UpdateTenantUseCase.js +21 -0
  241. package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -0
  242. package/api/features/UpdateTenant/abstractions.d.ts +39 -0
  243. package/api/features/UpdateTenant/abstractions.js +6 -0
  244. package/api/features/UpdateTenant/abstractions.js.map +1 -0
  245. package/api/features/UpdateTenant/feature.d.ts +4 -0
  246. package/api/features/UpdateTenant/feature.js +13 -0
  247. package/api/features/UpdateTenant/feature.js.map +1 -0
  248. package/api/graphql/CreateTenantSchema.d.ts +16 -0
  249. package/api/graphql/CreateTenantSchema.js +83 -0
  250. package/api/graphql/CreateTenantSchema.js.map +1 -0
  251. package/api/graphql/DisableTenantSchema.d.ts +8 -0
  252. package/api/graphql/DisableTenantSchema.js +31 -0
  253. package/api/graphql/DisableTenantSchema.js.map +1 -0
  254. package/api/graphql/EnableTenantSchema.d.ts +8 -0
  255. package/api/graphql/EnableTenantSchema.js +31 -0
  256. package/api/graphql/EnableTenantSchema.js.map +1 -0
  257. package/api/graphql/GetCurrentTenantSchema.d.ts +8 -0
  258. package/api/graphql/GetCurrentTenantSchema.js +49 -0
  259. package/api/graphql/GetCurrentTenantSchema.js.map +1 -0
  260. package/api/graphql/InstallTenantSchema.d.ts +8 -0
  261. package/api/graphql/InstallTenantSchema.js +43 -0
  262. package/api/graphql/InstallTenantSchema.js.map +1 -0
  263. package/exports/admin/tenancy.d.ts +7 -0
  264. package/exports/admin/tenancy.js +4 -0
  265. package/exports/api/tenant-manager.d.ts +9 -0
  266. package/exports/api/tenant-manager.js +8 -0
  267. package/index.d.ts +1 -0
  268. package/index.js +1 -0
  269. package/package.json +46 -0
  270. package/shared/Tenant.d.ts +21 -0
  271. package/shared/Tenant.js +27 -0
  272. package/shared/Tenant.js.map +1 -0
  273. package/shared/constants.d.ts +1 -0
  274. package/shared/constants.js +4 -0
  275. package/shared/constants.js.map +1 -0
@@ -0,0 +1,35 @@
1
+ import react from "react";
2
+ import { TenantSelector as app_admin_TenantSelector, useAuthentication } from "@webiny/app-admin";
3
+ import { CopyButton, Icon, Tooltip, useToast } from "@webiny/admin-ui";
4
+ import { ReactComponent } from "@webiny/icons/business.svg";
5
+ const TenantSelector_TenantSelector = app_admin_TenantSelector.createDecorator(()=>function() {
6
+ const { identity } = useAuthentication();
7
+ const currentTenant = identity.currentTenant;
8
+ const toast = useToast();
9
+ const confirmClipboard = ()=>{
10
+ toast.showSuccessToast({
11
+ title: "Tenant ID copied to clipboard!"
12
+ });
13
+ };
14
+ return /*#__PURE__*/ react.createElement(Tooltip, {
15
+ content: /*#__PURE__*/ react.createElement("div", {
16
+ className: "flex items-center gap-x-xs"
17
+ }, "ID: ", currentTenant.id, /*#__PURE__*/ react.createElement(CopyButton, {
18
+ size: "sm",
19
+ value: currentTenant.id,
20
+ onCopy: confirmClipboard,
21
+ variant: "ghost-negative"
22
+ })),
23
+ side: "bottom",
24
+ trigger: /*#__PURE__*/ react.createElement("div", {
25
+ className: "flex items-center gap-x-xs cursor-pointer"
26
+ }, /*#__PURE__*/ react.createElement(Icon, {
27
+ label: "Root tenant",
28
+ icon: /*#__PURE__*/ react.createElement(ReactComponent, null),
29
+ className: "fill-neutral-xstrong"
30
+ }), currentTenant.name)
31
+ });
32
+ });
33
+ export { TenantSelector_TenantSelector as TenantSelector };
34
+
35
+ //# sourceMappingURL=TenantSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/TenantSelector.js","sources":["../../src/admin/TenantSelector.tsx"],"sourcesContent":["import React from \"react\";\nimport { TenantSelector as BaseTenantSelector } from \"@webiny/app-admin\";\nimport { CopyButton, Icon, Tooltip, useToast } from \"@webiny/admin-ui\";\nimport { useAuthentication } from \"@webiny/app-admin\";\nimport { ReactComponent as TenantIcon } from \"@webiny/icons/business.svg\";\n\nexport const TenantSelector = BaseTenantSelector.createDecorator(() => {\n return function TenantSelector() {\n const { identity } = useAuthentication();\n const currentTenant = identity.currentTenant;\n const toast = useToast();\n\n const confirmClipboard = () => {\n toast.showSuccessToast({\n title: \"Tenant ID copied to clipboard!\"\n });\n };\n\n return (\n <Tooltip\n content={\n <div className={\"flex items-center gap-x-xs\"}>\n ID: {currentTenant.id}\n <CopyButton\n size=\"sm\"\n value={currentTenant.id}\n onCopy={confirmClipboard}\n variant={\"ghost-negative\"}\n />\n </div>\n }\n side={\"bottom\"}\n trigger={\n <div className={\"flex items-center gap-x-xs cursor-pointer\"}>\n <Icon\n label=\"Root tenant\"\n icon={<TenantIcon />}\n className={\"fill-neutral-xstrong\"}\n />\n {currentTenant.name}\n </div>\n }\n />\n );\n };\n});\n"],"names":["TenantSelector","BaseTenantSelector","identity","useAuthentication","currentTenant","toast","useToast","confirmClipboard","Tooltip","CopyButton","Icon","TenantIcon"],"mappings":";;;;AAMO,MAAMA,gCAAiBC,yBAAAA,eAAkC,CAAC,IACtD;QACH,MAAM,EAAEC,QAAQ,EAAE,GAAGC;QACrB,MAAMC,gBAAgBF,SAAS,aAAa;QAC5C,MAAMG,QAAQC;QAEd,MAAMC,mBAAmB;YACrBF,MAAM,gBAAgB,CAAC;gBACnB,OAAO;YACX;QACJ;QAEA,OAAO,WAAP,GACI,oBAACG,SAAOA;YACJ,uBACI,oBAAC;gBAAI,WAAW;eAA8B,QACrCJ,cAAc,EAAE,gBACrB,oBAACK,YAAUA;gBACP,MAAK;gBACL,OAAOL,cAAc,EAAE;gBACvB,QAAQG;gBACR,SAAS;;YAIrB,MAAM;YACN,uBACI,oBAAC;gBAAI,WAAW;6BACZ,oBAACG,MAAIA;gBACD,OAAM;gBACN,oBAAM,oBAACC,gBAAUA;gBACjB,WAAW;gBAEdP,cAAc,IAAI;;IAKvC"}
@@ -0,0 +1,4 @@
1
+ export declare const TM_PERMISSIONS_SCHEMA: {
2
+ readonly prefix: "tm";
3
+ readonly fullAccess: true;
4
+ };
@@ -0,0 +1,8 @@
1
+ import { createPermissionSchema } from "@webiny/app-admin";
2
+ const TM_PERMISSIONS_SCHEMA = createPermissionSchema({
3
+ prefix: "tm",
4
+ fullAccess: true
5
+ });
6
+ export { TM_PERMISSIONS_SCHEMA };
7
+
8
+ //# sourceMappingURL=permissionsSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/domain/permissionsSchema.js","sources":["../../../src/admin/domain/permissionsSchema.ts"],"sourcesContent":["import { createPermissionSchema } from \"@webiny/app-admin\";\n\nexport const TM_PERMISSIONS_SCHEMA = createPermissionSchema({\n prefix: \"tm\",\n fullAccess: true\n});\n"],"names":["TM_PERMISSIONS_SCHEMA","createPermissionSchema"],"mappings":";AAEO,MAAMA,wBAAwBC,uBAAuB;IACxD,QAAQ;IACR,YAAY;AAChB"}
@@ -0,0 +1,17 @@
1
+ import type { Permissions } from "@webiny/app-admin/exports/admin/security.js";
2
+ import { TM_PERMISSIONS_SCHEMA } from "../../../admin/domain/permissionsSchema.js";
3
+ export declare const TmPermissions: import("@webiny/di").Abstraction<{
4
+ canAccess: (entityId: never) => boolean;
5
+ canAction: (action: string, entityId: never) => boolean;
6
+ } & {
7
+ canRead: (entityId: string) => boolean;
8
+ canCreate: (entityId: string) => boolean;
9
+ canEdit: (entityId: string, item?: import("@webiny/app-admin/permissions").OwnableItem) => boolean;
10
+ canDelete: (entityId: string, item?: import("@webiny/app-admin/permissions").OwnableItem) => boolean;
11
+ } & {
12
+ canPublish: (entityId: string) => boolean;
13
+ canUnpublish: (entityId: string) => boolean;
14
+ }>;
15
+ export declare namespace TmPermissions {
16
+ type Interface = Permissions<typeof TM_PERMISSIONS_SCHEMA>;
17
+ }
@@ -0,0 +1,6 @@
1
+ import { createPermissionsAbstraction } from "@webiny/app-admin/exports/admin/security.js";
2
+ import { TM_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
3
+ const TmPermissions = createPermissionsAbstraction(TM_PERMISSIONS_SCHEMA);
4
+ export { TmPermissions };
5
+
6
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/features/permissions/abstractions.js","sources":["../../../../src/admin/features/permissions/abstractions.ts"],"sourcesContent":["import { createPermissionsAbstraction } from \"@webiny/app-admin/exports/admin/security.js\";\nimport type { Permissions } from \"@webiny/app-admin/exports/admin/security.js\";\nimport { TM_PERMISSIONS_SCHEMA } from \"~/admin/domain/permissionsSchema.js\";\n\nexport const TmPermissions = createPermissionsAbstraction(TM_PERMISSIONS_SCHEMA);\n\nexport namespace TmPermissions {\n export type Interface = Permissions<typeof TM_PERMISSIONS_SCHEMA>;\n}\n"],"names":["TmPermissions","createPermissionsAbstraction","TM_PERMISSIONS_SCHEMA"],"mappings":";;AAIO,MAAMA,gBAAgBC,6BAA6BC"}
@@ -0,0 +1,14 @@
1
+ export declare const TmPermissionsFeature: import("@webiny/feature/admin/createFeature.js").FeatureDefinition<{
2
+ permissions: {
3
+ canAccess: (entityId: never) => boolean;
4
+ canAction: (action: string, entityId: never) => boolean;
5
+ } & {
6
+ canRead: (entityId: string) => boolean;
7
+ canCreate: (entityId: string) => boolean;
8
+ canEdit: (entityId: string, item?: import("@webiny/app-admin/index.js").OwnableItem) => boolean;
9
+ canDelete: (entityId: string, item?: import("@webiny/app-admin/index.js").OwnableItem) => boolean;
10
+ } & {
11
+ canPublish: (entityId: string) => boolean;
12
+ canUnpublish: (entityId: string) => boolean;
13
+ };
14
+ }, []>;
@@ -0,0 +1,7 @@
1
+ import { createPermissionsFeature } from "@webiny/app-admin/exports/admin/security.js";
2
+ import { TM_PERMISSIONS_SCHEMA } from "../../domain/permissionsSchema.js";
3
+ import { TmPermissions } from "./abstractions.js";
4
+ const TmPermissionsFeature = createPermissionsFeature(TM_PERMISSIONS_SCHEMA, TmPermissions);
5
+ export { TmPermissionsFeature };
6
+
7
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin/features/permissions/feature.js","sources":["../../../../src/admin/features/permissions/feature.ts"],"sourcesContent":["import { createPermissionsFeature } from \"@webiny/app-admin/exports/admin/security.js\";\nimport { TM_PERMISSIONS_SCHEMA } from \"~/admin/domain/permissionsSchema.js\";\nimport { TmPermissions } from \"./abstractions.js\";\n\nexport const TmPermissionsFeature = createPermissionsFeature(TM_PERMISSIONS_SCHEMA, TmPermissions);\n"],"names":["TmPermissionsFeature","createPermissionsFeature","TM_PERMISSIONS_SCHEMA","TmPermissions"],"mappings":";;;AAIO,MAAMA,uBAAuBC,yBAAyBC,uBAAuBC"}
@@ -0,0 +1,7 @@
1
+ import { CmsContentEntry } from "@webiny/app-headless-cms/types.js";
2
+ import type { TenantValues } from "../shared/Tenant.js";
3
+ type BaseEntry = Omit<CmsContentEntry, "values">;
4
+ export interface TenantEntry extends BaseEntry {
5
+ values: TenantValues;
6
+ }
7
+ export {};
package/admin/types.js ADDED
File without changes
@@ -0,0 +1,4 @@
1
+ export declare const Extension: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,39 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import TenantModel from "./domain/TenantModel.js";
3
+ import { CreateAndInstallTenantFeature } from "./features/CreateAndInstallTenant/feature.js";
4
+ import { CreateTenantFeature } from "./features/CreateTenant/feature.js";
5
+ import { DisableTenantFeature } from "./features/DisableTenant/feature.js";
6
+ import { EnableTenantFeature } from "./features/EnableTenant/feature.js";
7
+ import { GetTenantByIdFeature } from "./features/GetTenantById/feature.js";
8
+ import { GetCurrentTenantFeature } from "./features/GetCurrentTenant/feature.js";
9
+ import { UpdateTenantFeature } from "./features/UpdateTenant/feature.js";
10
+ import { DeleteTenantOnEntryDeleteFeature } from "./features/DeleteTenantOnEntryDelete/feature.js";
11
+ import InstallTenantSchema from "./graphql/InstallTenantSchema.js";
12
+ import CreateTenantSchema from "./graphql/CreateTenantSchema.js";
13
+ import DisableTenantSchema from "./graphql/DisableTenantSchema.js";
14
+ import EnableTenantSchema from "./graphql/EnableTenantSchema.js";
15
+ import GetCurrentTenantSchema from "./graphql/GetCurrentTenantSchema.js";
16
+ import { AddCmsPermissionsFeature } from "./features/AddCmsPermissions/feature.js";
17
+ const Extension = createFeature({
18
+ name: "TenantManagement",
19
+ register (container) {
20
+ container.register(TenantModel);
21
+ container.register(InstallTenantSchema);
22
+ container.register(CreateTenantSchema);
23
+ container.register(DisableTenantSchema);
24
+ container.register(EnableTenantSchema);
25
+ container.register(GetCurrentTenantSchema);
26
+ CreateAndInstallTenantFeature.register(container);
27
+ CreateTenantFeature.register(container);
28
+ DisableTenantFeature.register(container);
29
+ EnableTenantFeature.register(container);
30
+ GetTenantByIdFeature.register(container);
31
+ GetCurrentTenantFeature.register(container);
32
+ UpdateTenantFeature.register(container);
33
+ DeleteTenantOnEntryDeleteFeature.register(container);
34
+ AddCmsPermissionsFeature.register(container);
35
+ }
36
+ });
37
+ export { Extension };
38
+
39
+ //# sourceMappingURL=Extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/Extension.js","sources":["../../src/api/Extension.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport TenantModel from \"./domain/TenantModel.js\";\nimport { CreateAndInstallTenantFeature } from \"./features/CreateAndInstallTenant/feature.js\";\nimport { CreateTenantFeature } from \"./features/CreateTenant/feature.js\";\nimport { DisableTenantFeature } from \"./features/DisableTenant/feature.js\";\nimport { EnableTenantFeature } from \"./features/EnableTenant/feature.js\";\nimport { GetTenantByIdFeature } from \"./features/GetTenantById/feature.js\";\nimport { GetCurrentTenantFeature } from \"./features/GetCurrentTenant/feature.js\";\nimport { UpdateTenantFeature } from \"./features/UpdateTenant/feature.js\";\nimport { DeleteTenantOnEntryDeleteFeature } from \"./features/DeleteTenantOnEntryDelete/feature.js\";\nimport InstallTenantSchema from \"./graphql/InstallTenantSchema.js\";\nimport CreateTenantSchema from \"./graphql/CreateTenantSchema.js\";\nimport DisableTenantSchema from \"./graphql/DisableTenantSchema.js\";\nimport EnableTenantSchema from \"./graphql/EnableTenantSchema.js\";\nimport GetCurrentTenantSchema from \"./graphql/GetCurrentTenantSchema.js\";\nimport { AddCmsPermissionsFeature } from \"~/api/features/AddCmsPermissions/feature.js\";\n\nexport const Extension = createFeature({\n name: \"TenantManagement\",\n register(container) {\n container.register(TenantModel);\n\n //GraphQL\n container.register(InstallTenantSchema);\n container.register(CreateTenantSchema);\n container.register(DisableTenantSchema);\n container.register(EnableTenantSchema);\n container.register(GetCurrentTenantSchema);\n\n // Features\n CreateAndInstallTenantFeature.register(container);\n CreateTenantFeature.register(container);\n DisableTenantFeature.register(container);\n EnableTenantFeature.register(container);\n GetTenantByIdFeature.register(container);\n GetCurrentTenantFeature.register(container);\n UpdateTenantFeature.register(container);\n DeleteTenantOnEntryDeleteFeature.register(container);\n AddCmsPermissionsFeature.register(container);\n }\n});\n"],"names":["Extension","createFeature","container","TenantModel","InstallTenantSchema","CreateTenantSchema","DisableTenantSchema","EnableTenantSchema","GetCurrentTenantSchema","CreateAndInstallTenantFeature","CreateTenantFeature","DisableTenantFeature","EnableTenantFeature","GetTenantByIdFeature","GetCurrentTenantFeature","UpdateTenantFeature","DeleteTenantOnEntryDeleteFeature","AddCmsPermissionsFeature"],"mappings":";;;;;;;;;;;;;;;;AAiBO,MAAMA,YAAYC,cAAc;IACnC,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QAGnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QAGnBC,8BAA8B,QAAQ,CAACP;QACvCQ,oBAAoB,QAAQ,CAACR;QAC7BS,qBAAqB,QAAQ,CAACT;QAC9BU,oBAAoB,QAAQ,CAACV;QAC7BW,qBAAqB,QAAQ,CAACX;QAC9BY,wBAAwB,QAAQ,CAACZ;QACjCa,oBAAoB,QAAQ,CAACb;QAC7Bc,iCAAiC,QAAQ,CAACd;QAC1Ce,yBAAyB,QAAQ,CAACf;IACtC;AACJ"}
@@ -0,0 +1,3 @@
1
+ export declare class TenantId {
2
+ static from(id?: string): string;
3
+ }
@@ -0,0 +1,10 @@
1
+ import { EntryId } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
2
+ class TenantId {
3
+ static from(id) {
4
+ if (id) return EntryId.from(id).id;
5
+ return EntryId.create().id;
6
+ }
7
+ }
8
+ export { TenantId };
9
+
10
+ //# sourceMappingURL=TenantId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/domain/TenantId.js","sources":["../../../src/api/domain/TenantId.ts"],"sourcesContent":["import { EntryId } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\n\nexport class TenantId {\n static from(id?: string) {\n if (id) {\n // Ensure we have a clean id, without the revision suffix.\n return EntryId.from(id).id;\n }\n\n return EntryId.create().id;\n }\n}\n"],"names":["TenantId","id","EntryId"],"mappings":";AAEO,MAAMA;IACT,OAAO,KAAKC,EAAW,EAAE;QACrB,IAAIA,IAEA,OAAOC,QAAQ,IAAI,CAACD,IAAI,EAAE;QAG9B,OAAOC,QAAQ,MAAM,GAAG,EAAE;IAC9B;AACJ"}
@@ -0,0 +1,11 @@
1
+ import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
2
+ import { TenantModelExtension } from "./TenantModelExtension.js";
3
+ declare class TenantModelFactory implements ModelFactory.Interface {
4
+ private extensions;
5
+ constructor(extensions: TenantModelExtension.Interface[]);
6
+ execute(builder: ModelFactory.Builder): Promise<import("@webiny/api-headless-cms/features/modelBuilder/index.js").PublicModelBuilder[]>;
7
+ }
8
+ declare const _default: typeof TenantModelFactory & {
9
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/modelBuilder/abstractions.js").IModelFactory>;
10
+ };
11
+ export default _default;
@@ -0,0 +1,68 @@
1
+ import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
2
+ import { TenantModelExtension } from "./TenantModelExtension.js";
3
+ import { TENANT_MODEL_ID } from "../../shared/constants.js";
4
+ class TenantModelFactory {
5
+ constructor(extensions){
6
+ this.extensions = extensions;
7
+ }
8
+ async execute(builder) {
9
+ const model = builder.public({
10
+ modelId: TENANT_MODEL_ID,
11
+ name: "Tenant",
12
+ group: "hidden"
13
+ }).description("Manage system tenants.").titleFieldId("name").icon("fas/building").singularApiName("Tenant").pluralApiName("Tenants").tags([
14
+ "$publishing:false",
15
+ "$hidden:true"
16
+ ]);
17
+ model.fields((fields)=>({
18
+ name: fields.text().label("Name").description("Enter a tenant name").required().renderer("textInput"),
19
+ description: fields.longText().label("Description").description("Enter a short tenant description").renderer("textarea").required(),
20
+ status: fields.text().label("Status").defaultValue("disabled").renderer("hidden").predefinedValues([
21
+ {
22
+ value: "enabled",
23
+ label: "Enabled"
24
+ },
25
+ {
26
+ value: "disabled",
27
+ label: "Disabled"
28
+ }
29
+ ]),
30
+ isInstalled: fields.boolean().label("Is installed?").renderer("hidden").defaultValue(false),
31
+ extensions: fields.object().renderer("passthrough")
32
+ })).layout([
33
+ [
34
+ "name"
35
+ ],
36
+ [
37
+ "description"
38
+ ],
39
+ [
40
+ "extensions"
41
+ ]
42
+ ]);
43
+ for (const modifier of this.extensions)model.fields((fields)=>{
44
+ const extensions = fields.extend().object();
45
+ modifier.execute(extensions);
46
+ return {
47
+ extensions
48
+ };
49
+ });
50
+ return [
51
+ model
52
+ ];
53
+ }
54
+ }
55
+ const TenantModel = ModelFactory.createImplementation({
56
+ implementation: TenantModelFactory,
57
+ dependencies: [
58
+ [
59
+ TenantModelExtension,
60
+ {
61
+ multiple: true
62
+ }
63
+ ]
64
+ ]
65
+ });
66
+ export default TenantModel;
67
+
68
+ //# sourceMappingURL=TenantModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/domain/TenantModel.js","sources":["../../../src/api/domain/TenantModel.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { TenantModelExtension } from \"./TenantModelExtension.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\n\nclass TenantModelFactory implements ModelFactory.Interface {\n constructor(private extensions: TenantModelExtension.Interface[]) {}\n\n async execute(builder: ModelFactory.Builder) {\n const model = builder\n .public({\n modelId: TENANT_MODEL_ID,\n name: \"Tenant\",\n group: \"hidden\"\n })\n .description(\"Manage system tenants.\")\n .titleFieldId(\"name\")\n .icon(\"fas/building\")\n .singularApiName(\"Tenant\")\n .pluralApiName(\"Tenants\")\n .tags([\"$publishing:false\", \"$hidden:true\"]);\n\n model\n .fields(fields => ({\n name: fields\n .text()\n .label(\"Name\")\n .description(\"Enter a tenant name\")\n .required()\n .renderer(\"textInput\"),\n description: fields\n .longText()\n .label(\"Description\")\n .description(\"Enter a short tenant description\")\n .renderer(\"textarea\")\n .required(),\n status: fields\n .text()\n .label(\"Status\")\n .defaultValue(\"disabled\")\n .renderer(\"hidden\")\n .predefinedValues([\n {\n value: \"enabled\",\n label: \"Enabled\"\n },\n {\n value: \"disabled\",\n label: \"Disabled\"\n }\n ]),\n isInstalled: fields\n .boolean()\n .label(\"Is installed?\")\n .renderer(\"hidden\")\n .defaultValue(false),\n extensions: fields.object().renderer(\"passthrough\")\n }))\n .layout([[\"name\"], [\"description\"], [\"extensions\"]]);\n\n for (const modifier of this.extensions) {\n model.fields(fields => {\n const extensions = fields.extend().object();\n modifier.execute(extensions);\n\n return { extensions };\n });\n }\n\n return [model];\n }\n}\n\nexport default ModelFactory.createImplementation({\n implementation: TenantModelFactory,\n dependencies: [[TenantModelExtension, { multiple: true }]]\n});\n"],"names":["TenantModelFactory","extensions","builder","model","TENANT_MODEL_ID","fields","modifier","ModelFactory","TenantModelExtension"],"mappings":";;;AAIA,MAAMA;IACF,YAAoBC,UAA4C,CAAE;aAA9CA,UAAU,GAAVA;IAA+C;IAEnE,MAAM,QAAQC,OAA6B,EAAE;QACzC,MAAMC,QAAQD,QACT,MAAM,CAAC;YACJ,SAASE;YACT,MAAM;YACN,OAAO;QACX,GACC,WAAW,CAAC,0BACZ,YAAY,CAAC,QACb,IAAI,CAAC,gBACL,eAAe,CAAC,UAChB,aAAa,CAAC,WACd,IAAI,CAAC;YAAC;YAAqB;SAAe;QAE/CD,MACK,MAAM,CAACE,CAAAA,SAAW;gBACf,MAAMA,OACD,IAAI,GACJ,KAAK,CAAC,QACN,WAAW,CAAC,uBACZ,QAAQ,GACR,QAAQ,CAAC;gBACd,aAAaA,OACR,QAAQ,GACR,KAAK,CAAC,eACN,WAAW,CAAC,oCACZ,QAAQ,CAAC,YACT,QAAQ;gBACb,QAAQA,OACH,IAAI,GACJ,KAAK,CAAC,UACN,YAAY,CAAC,YACb,QAAQ,CAAC,UACT,gBAAgB,CAAC;oBACd;wBACI,OAAO;wBACP,OAAO;oBACX;oBACA;wBACI,OAAO;wBACP,OAAO;oBACX;iBACH;gBACL,aAAaA,OACR,OAAO,GACP,KAAK,CAAC,iBACN,QAAQ,CAAC,UACT,YAAY,CAAC;gBAClB,YAAYA,OAAO,MAAM,GAAG,QAAQ,CAAC;YACzC,IACC,MAAM,CAAC;YAAC;gBAAC;aAAO;YAAE;gBAAC;aAAc;YAAE;gBAAC;aAAa;SAAC;QAEvD,KAAK,MAAMC,YAAY,IAAI,CAAC,UAAU,CAClCH,MAAM,MAAM,CAACE,CAAAA;YACT,MAAMJ,aAAaI,OAAO,MAAM,GAAG,MAAM;YACzCC,SAAS,OAAO,CAACL;YAEjB,OAAO;gBAAEA;YAAW;QACxB;QAGJ,OAAO;YAACE;SAAM;IAClB;AACJ;AAEA,oBAAeI,aAAa,oBAAoB,CAAC;IAC7C,gBAAgBP;IAChB,cAAc;QAAC;YAACQ;YAAsB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC9D"}
@@ -0,0 +1,11 @@
1
+ import { IObjectFieldBuilder } from "@webiny/api-headless-cms/features/modelBuilder/fields/ObjectFieldType.js";
2
+ export type IExtension = Pick<IObjectFieldBuilder, "fields" | "layout">;
3
+ export interface ITenantModelExtension {
4
+ execute(extension: IExtension): void;
5
+ }
6
+ /** Extend the tenant content model with custom fields. */
7
+ export declare const TenantModelExtension: import("@webiny/di").Abstraction<ITenantModelExtension>;
8
+ export declare namespace TenantModelExtension {
9
+ type Interface = ITenantModelExtension;
10
+ type Extension = IExtension;
11
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const TenantModelExtension = createAbstraction("TenantModelExtension");
3
+ export { TenantModelExtension };
4
+
5
+ //# sourceMappingURL=TenantModelExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/domain/TenantModelExtension.js","sources":["../../../src/api/domain/TenantModelExtension.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { IObjectFieldBuilder } from \"@webiny/api-headless-cms/features/modelBuilder/fields/ObjectFieldType.js\";\n\nexport type IExtension = Pick<IObjectFieldBuilder, \"fields\" | \"layout\">;\n\nexport interface ITenantModelExtension {\n execute(extension: IExtension): void;\n}\n\n/** Extend the tenant content model with custom fields. */\nexport const TenantModelExtension =\n createAbstraction<ITenantModelExtension>(\"TenantModelExtension\");\n\nexport namespace TenantModelExtension {\n export type Interface = ITenantModelExtension;\n export type Extension = IExtension;\n}\n"],"names":["TenantModelExtension","createAbstraction"],"mappings":";AAUO,MAAMA,uBACTC,kBAAyC"}
@@ -0,0 +1,33 @@
1
+ import { BaseError } from "@webiny/feature/api";
2
+ export declare class TenantNotFoundError extends BaseError {
3
+ readonly code: "Tenant/NotFound";
4
+ constructor(id: string);
5
+ }
6
+ export declare class TenantModelNotFoundError extends BaseError {
7
+ readonly code: "Tenant/ModelNotFound";
8
+ constructor();
9
+ }
10
+ export declare class TenantPersistenceError extends BaseError<{
11
+ error: Error;
12
+ }> {
13
+ readonly code: "Tenant/Persist";
14
+ constructor(error: Error);
15
+ }
16
+ export declare class TenantCreationError extends BaseError<{
17
+ error: Error;
18
+ }> {
19
+ readonly code: "Tenant/Create";
20
+ constructor(error: Error);
21
+ }
22
+ export declare class TenantInstallationError extends BaseError<{
23
+ error: Error;
24
+ }> {
25
+ readonly code: "Tenant/Install";
26
+ constructor(error: Error);
27
+ }
28
+ export declare class TenantUpdateError extends BaseError<{
29
+ error: Error;
30
+ }> {
31
+ readonly code: "Tenant/Update";
32
+ constructor(error: Error);
33
+ }
@@ -0,0 +1,58 @@
1
+ import { BaseError } from "@webiny/feature/api";
2
+ class TenantNotFoundError extends BaseError {
3
+ constructor(id){
4
+ super({
5
+ message: `Tenant with id "${id}" was not found!`
6
+ }), this.code = "Tenant/NotFound";
7
+ }
8
+ }
9
+ class TenantModelNotFoundError extends BaseError {
10
+ constructor(){
11
+ super({
12
+ message: "Tenant model was not found!"
13
+ }), this.code = "Tenant/ModelNotFound";
14
+ }
15
+ }
16
+ class TenantPersistenceError extends BaseError {
17
+ constructor(error){
18
+ super({
19
+ message: error.message,
20
+ data: {
21
+ error
22
+ }
23
+ }), this.code = "Tenant/Persist";
24
+ }
25
+ }
26
+ class TenantCreationError extends BaseError {
27
+ constructor(error){
28
+ super({
29
+ message: error.message,
30
+ data: {
31
+ error
32
+ }
33
+ }), this.code = "Tenant/Create";
34
+ }
35
+ }
36
+ class TenantInstallationError extends BaseError {
37
+ constructor(error){
38
+ super({
39
+ message: error.message,
40
+ data: {
41
+ error
42
+ }
43
+ }), this.code = "Tenant/Install";
44
+ }
45
+ }
46
+ class TenantUpdateError extends BaseError {
47
+ constructor(error){
48
+ super({
49
+ message: error.message,
50
+ data: {
51
+ error
52
+ }
53
+ }), this.code = "Tenant/Update";
54
+ }
55
+ }
56
+ export { TenantCreationError, TenantInstallationError, TenantModelNotFoundError, TenantNotFoundError, TenantPersistenceError, TenantUpdateError };
57
+
58
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/domain/errors.js","sources":["../../../src/api/domain/errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\n\nexport class TenantNotFoundError extends BaseError {\n override readonly code = \"Tenant/NotFound\" as const;\n\n constructor(id: string) {\n super({ message: `Tenant with id \"${id}\" was not found!` });\n }\n}\n\nexport class TenantModelNotFoundError extends BaseError {\n override readonly code = \"Tenant/ModelNotFound\" as const;\n\n constructor() {\n super({ message: `Tenant model was not found!` });\n }\n}\n\nexport class TenantPersistenceError extends BaseError<{ error: Error }> {\n override readonly code = \"Tenant/Persist\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { error } });\n }\n}\n\nexport class TenantCreationError extends BaseError<{ error: Error }> {\n override readonly code = \"Tenant/Create\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { error } });\n }\n}\n\nexport class TenantInstallationError extends BaseError<{ error: Error }> {\n override readonly code = \"Tenant/Install\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { error } });\n }\n}\n\nexport class TenantUpdateError extends BaseError<{ error: Error }> {\n override readonly code = \"Tenant/Update\" as const;\n\n constructor(error: Error) {\n super({ message: error.message, data: { error } });\n }\n}\n"],"names":["TenantNotFoundError","BaseError","id","TenantModelNotFoundError","TenantPersistenceError","error","TenantCreationError","TenantInstallationError","TenantUpdateError"],"mappings":";AAEO,MAAMA,4BAA4BC;IAGrC,YAAYC,EAAU,CAAE;QACpB,KAAK,CAAC;YAAE,SAAS,CAAC,gBAAgB,EAAEA,GAAG,gBAAgB,CAAC;QAAC,SAH3C,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMC,iCAAiCF;IAG1C,aAAc;QACV,KAAK,CAAC;YAAE,SAAS;QAA8B,SAHjC,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMG,+BAA+BH;IAGxC,YAAYI,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAEA;YAAM;QAAE,SAHlC,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMC,4BAA4BL;IAGrC,YAAYI,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAEA;YAAM;QAAE,SAHlC,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAME,gCAAgCN;IAGzC,YAAYI,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAEA;YAAM;QAAE,SAHlC,IAAI,GAAG;IAIzB;AACJ;AAEO,MAAMG,0BAA0BP;IAGnC,YAAYI,KAAY,CAAE;QACtB,KAAK,CAAC;YAAE,SAASA,MAAM,OAAO;YAAE,MAAM;gBAAEA;YAAM;QAAE,SAHlC,IAAI,GAAG;IAIzB;AACJ"}
@@ -0,0 +1,8 @@
1
+ import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
2
+ declare class AddCmsPermissions implements PermissionTransformer.Interface {
3
+ execute(permission: PermissionTransformer.Permission): PermissionTransformer.Permission[] | PermissionTransformer.Permission;
4
+ }
5
+ declare const _default: typeof AddCmsPermissions & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js").IPermissionTransformer>;
7
+ };
8
+ export default _default;
@@ -0,0 +1,48 @@
1
+ import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
2
+ import { TENANT_MODEL_ID } from "../../../shared/constants.js";
3
+ class AddCmsPermissions {
4
+ execute(permission) {
5
+ if ("tm.*" !== permission.name) return permission;
6
+ return [
7
+ permission,
8
+ {
9
+ name: "cms.endpoint.manage",
10
+ _src: "tenant-manager"
11
+ },
12
+ {
13
+ name: "cms.contentModel",
14
+ own: false,
15
+ rwd: "r",
16
+ pw: "",
17
+ models: [
18
+ TENANT_MODEL_ID
19
+ ],
20
+ _src: "tenant-manager"
21
+ },
22
+ {
23
+ name: "cms.contentModelGroup",
24
+ own: false,
25
+ rwd: "r",
26
+ pw: "",
27
+ groups: [
28
+ "hidden"
29
+ ],
30
+ _src: "tenant-manager"
31
+ },
32
+ {
33
+ name: "cms.contentEntry",
34
+ own: false,
35
+ rwd: "rwd",
36
+ pw: "",
37
+ _src: "tenant-manager"
38
+ }
39
+ ];
40
+ }
41
+ }
42
+ const AddCmsPermissions_AddCmsPermissions = PermissionTransformer.createImplementation({
43
+ implementation: AddCmsPermissions,
44
+ dependencies: []
45
+ });
46
+ export default AddCmsPermissions_AddCmsPermissions;
47
+
48
+ //# sourceMappingURL=AddCmsPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AddCmsPermissions/AddCmsPermissions.js","sources":["../../../../src/api/features/AddCmsPermissions/AddCmsPermissions.ts"],"sourcesContent":["import { PermissionTransformer } from \"@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\n\nclass AddCmsPermissions implements PermissionTransformer.Interface {\n execute(permission: PermissionTransformer.Permission) {\n if (permission.name !== \"tm.*\") {\n return permission;\n }\n\n return [\n permission,\n {\n name: \"cms.endpoint.manage\",\n _src: \"tenant-manager\"\n },\n {\n name: \"cms.contentModel\",\n own: false,\n rwd: \"r\",\n pw: \"\",\n models: [TENANT_MODEL_ID],\n _src: \"tenant-manager\"\n },\n {\n name: \"cms.contentModelGroup\",\n own: false,\n rwd: \"r\",\n pw: \"\",\n groups: [\"hidden\"],\n _src: \"tenant-manager\"\n },\n {\n name: \"cms.contentEntry\",\n own: false,\n rwd: \"rwd\",\n pw: \"\",\n _src: \"tenant-manager\"\n }\n ];\n }\n}\n\nexport default PermissionTransformer.createImplementation({\n implementation: AddCmsPermissions,\n dependencies: []\n});\n"],"names":["AddCmsPermissions","permission","TENANT_MODEL_ID","PermissionTransformer"],"mappings":";;AAGA,MAAMA;IACF,QAAQC,UAA4C,EAAE;QAClD,IAAIA,AAAoB,WAApBA,WAAW,IAAI,EACf,OAAOA;QAGX,OAAO;YACHA;YACA;gBACI,MAAM;gBACN,MAAM;YACV;YACA;gBACI,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,QAAQ;oBAACC;iBAAgB;gBACzB,MAAM;YACV;YACA;gBACI,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,QAAQ;oBAAC;iBAAS;gBAClB,MAAM;YACV;YACA;gBACI,MAAM;gBACN,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,MAAM;YACV;SACH;IACL;AACJ;AAEA,4CAAeC,sBAAsB,oBAAoB,CAAC;IACtD,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
@@ -0,0 +1,4 @@
1
+ export declare const AddCmsPermissionsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import AddCmsPermissions from "./AddCmsPermissions.js";
3
+ const AddCmsPermissionsFeature = createFeature({
4
+ name: "AddCmsPermissions",
5
+ register (container) {
6
+ container.register(AddCmsPermissions);
7
+ }
8
+ });
9
+ export { AddCmsPermissionsFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/features/AddCmsPermissions/feature.js","sources":["../../../../src/api/features/AddCmsPermissions/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport AddCmsPermissions from \"./AddCmsPermissions.js\";\n\nexport const AddCmsPermissionsFeature = createFeature({\n name: \"AddCmsPermissions\",\n register(container) {\n container.register(AddCmsPermissions);\n }\n});\n"],"names":["AddCmsPermissionsFeature","createFeature","container","AddCmsPermissions"],"mappings":";;AAGO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1,24 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { Tenant } from "../../../shared/Tenant.js";
3
+ import { GetTenantByIdUseCase } from "../GetTenantById/abstractions.js";
4
+ import { UpdateTenantUseCase } from "../UpdateTenant/abstractions.js";
5
+ import { CreateAndInstallTenantUseCase as UseCaseAbstraction } from "./abstractions.js";
6
+ import * as Tenancy from "@webiny/api-core/exports/api/tenancy.js";
7
+ import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
8
+ declare class CreateAndInstallTenantUseCase implements UseCaseAbstraction.Interface {
9
+ private identityContext;
10
+ private getTenantByIdUseCase;
11
+ private updateTenantUseCase;
12
+ private coreGetTenantById;
13
+ private coreCreateTenant;
14
+ private coreUpdateTenant;
15
+ private coreDeleteTenant;
16
+ private coreInstallTenant;
17
+ constructor(identityContext: IdentityContext.Interface, getTenantByIdUseCase: GetTenantByIdUseCase.Interface, updateTenantUseCase: UpdateTenantUseCase.Interface, coreGetTenantById: Tenancy.GetTenantByIdUseCase.Interface, coreCreateTenant: Tenancy.CreateTenantUseCase.Interface, coreUpdateTenant: Tenancy.UpdateTenantUseCase.Interface, coreDeleteTenant: Tenancy.DeleteTenantUseCase.Interface, coreInstallTenant: Tenancy.InstallTenantUseCase.Interface);
18
+ execute(tenantId: string): Promise<Result<Tenant, UseCaseAbstraction.Error>>;
19
+ private markTenantInstalled;
20
+ }
21
+ declare const _default: typeof CreateAndInstallTenantUseCase & {
22
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateAndInstallTenantUseCase>;
23
+ };
24
+ export default _default;
@@ -0,0 +1,81 @@
1
+ import { Result } from "@webiny/feature/api";
2
+ import { EntryId } from "@webiny/api-headless-cms/domain/contentEntry/EntryId.js";
3
+ import { TenantCreationError, TenantInstallationError, TenantUpdateError } from "../../domain/errors.js";
4
+ import { GetTenantByIdUseCase } from "../GetTenantById/abstractions.js";
5
+ import { UpdateTenantUseCase } from "../UpdateTenant/abstractions.js";
6
+ import { CreateAndInstallTenantUseCase } from "./abstractions.js";
7
+ import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
8
+ import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
9
+ import * as __rspack_external__webiny_api_core_exports_api_tenancy_js_0fb78d16 from "@webiny/api-core/exports/api/tenancy.js";
10
+ class CreateAndInstallTenantUseCase_CreateAndInstallTenantUseCase {
11
+ constructor(identityContext, getTenantByIdUseCase, updateTenantUseCase, coreGetTenantById, coreCreateTenant, coreUpdateTenant, coreDeleteTenant, coreInstallTenant){
12
+ this.identityContext = identityContext;
13
+ this.getTenantByIdUseCase = getTenantByIdUseCase;
14
+ this.updateTenantUseCase = updateTenantUseCase;
15
+ this.coreGetTenantById = coreGetTenantById;
16
+ this.coreCreateTenant = coreCreateTenant;
17
+ this.coreUpdateTenant = coreUpdateTenant;
18
+ this.coreDeleteTenant = coreDeleteTenant;
19
+ this.coreInstallTenant = coreInstallTenant;
20
+ }
21
+ async execute(tenantId) {
22
+ if (!this.identityContext.getPermission("tm.tenant")) return Result.fail(new NotAuthorizedError({
23
+ message: "Not authorized to create tenants!"
24
+ }));
25
+ const entryId = EntryId.from(tenantId);
26
+ const tenantResult = await this.getTenantByIdUseCase.execute(entryId.id);
27
+ if (tenantResult.isFail()) return Result.fail(tenantResult.error);
28
+ const tenant = tenantResult.value;
29
+ const existingTenantResult = await this.coreGetTenantById.execute(tenant.id);
30
+ if (existingTenantResult.isOk()) {
31
+ await this.coreUpdateTenant.execute(tenant.id, {
32
+ name: tenant.values.name,
33
+ description: tenant.values.description,
34
+ status: "enabled"
35
+ });
36
+ return this.markTenantInstalled(tenant);
37
+ }
38
+ const createTenantResult = await this.coreCreateTenant.execute({
39
+ id: entryId.id,
40
+ name: tenant.values.name,
41
+ parent: "root",
42
+ description: tenant.values.name,
43
+ tags: []
44
+ });
45
+ if (createTenantResult.isFail()) return Result.fail(new TenantCreationError(createTenantResult.error));
46
+ const createdTenant = createTenantResult.value;
47
+ const installResult = await this.coreInstallTenant.execute({
48
+ tenant: createdTenant,
49
+ installationInput: []
50
+ });
51
+ if (installResult.isFail()) {
52
+ await this.coreDeleteTenant.execute(createdTenant.id);
53
+ return Result.fail(new TenantInstallationError(installResult.error));
54
+ }
55
+ return this.markTenantInstalled(tenant);
56
+ }
57
+ async markTenantInstalled(tenant) {
58
+ const updateResult = await this.updateTenantUseCase.execute(tenant.id, {
59
+ status: "enabled",
60
+ isInstalled: true
61
+ });
62
+ if (updateResult.isFail()) return Result.fail(new TenantUpdateError(updateResult.error));
63
+ return Result.ok(updateResult.value);
64
+ }
65
+ }
66
+ const CreateAndInstallTenant_CreateAndInstallTenantUseCase = CreateAndInstallTenantUseCase.createImplementation({
67
+ implementation: CreateAndInstallTenantUseCase_CreateAndInstallTenantUseCase,
68
+ dependencies: [
69
+ IdentityContext,
70
+ GetTenantByIdUseCase,
71
+ UpdateTenantUseCase,
72
+ __rspack_external__webiny_api_core_exports_api_tenancy_js_0fb78d16.GetTenantByIdUseCase,
73
+ __rspack_external__webiny_api_core_exports_api_tenancy_js_0fb78d16.CreateTenantUseCase,
74
+ __rspack_external__webiny_api_core_exports_api_tenancy_js_0fb78d16.UpdateTenantUseCase,
75
+ __rspack_external__webiny_api_core_exports_api_tenancy_js_0fb78d16.DeleteTenantUseCase,
76
+ __rspack_external__webiny_api_core_exports_api_tenancy_js_0fb78d16.InstallTenantUseCase
77
+ ]
78
+ });
79
+ export default CreateAndInstallTenant_CreateAndInstallTenantUseCase;
80
+
81
+ //# sourceMappingURL=CreateAndInstallTenantUseCase.js.map