@webiny/tenant-manager 6.4.11 → 6.6.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TenantManager.js +2 -2
- package/TenantManager.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenant.d.ts +6 -2
- package/admin/DisableTenant/DisableTenantRepository.d.ts +3 -1
- package/admin/DisableTenant/DisableTenantRepository.js +17 -2
- package/admin/DisableTenant/DisableTenantRepository.js.map +1 -1
- package/admin/DisableTenant/useDisableTenant.js +0 -9
- package/admin/DisableTenant/useDisableTenant.js.map +1 -1
- package/admin/EnableTenant/EnableTenantRepository.d.ts +3 -1
- package/admin/EnableTenant/EnableTenantRepository.js +17 -2
- package/admin/EnableTenant/EnableTenantRepository.js.map +1 -1
- package/admin/Extension.js +3 -0
- package/admin/Extension.js.map +1 -1
- package/admin/InstallTenant/InstallTenantGateway.d.ts +11 -0
- package/admin/InstallTenant/InstallTenantGateway.js +42 -0
- package/admin/InstallTenant/InstallTenantGateway.js.map +1 -0
- package/admin/InstallTenant/InstallTenantRepository.d.ts +12 -0
- package/admin/InstallTenant/InstallTenantRepository.js +34 -0
- package/admin/InstallTenant/InstallTenantRepository.js.map +1 -0
- package/admin/InstallTenant/InstallTenantUseCase.d.ts +10 -0
- package/admin/InstallTenant/InstallTenantUseCase.js +18 -0
- package/admin/InstallTenant/InstallTenantUseCase.js.map +1 -0
- package/admin/InstallTenant/abstractions.d.ts +21 -0
- package/admin/InstallTenant/abstractions.js +7 -0
- package/admin/InstallTenant/abstractions.js.map +1 -0
- package/admin/InstallTenant/feature.d.ts +3 -0
- package/admin/InstallTenant/feature.js +21 -0
- package/admin/InstallTenant/feature.js.map +1 -0
- package/admin/InstallTenant/index.d.ts +2 -0
- package/admin/InstallTenant/index.js +2 -0
- package/admin/InstallTenant/useInstallTenant.d.ts +4 -0
- package/admin/InstallTenant/useInstallTenant.js +24 -0
- package/admin/InstallTenant/useInstallTenant.js.map +1 -0
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -1
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +0 -9
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -1
- package/admin/TenantEntryList/FolderNameCell.d.ts +1 -1
- package/admin/TenantEntryList/FolderNameCell.js +3 -3
- package/admin/TenantEntryList/FolderNameCell.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +15 -26
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -1
- package/admin/TenantEntryList/ManageTenant.js +0 -1
- package/admin/TenantEntryList/ManageTenant.js.map +1 -1
- package/admin/TenantEntryList/TenantNameCell.js +11 -4
- package/admin/TenantEntryList/TenantNameCell.js.map +1 -1
- package/admin/TenantEntryList.js +7 -2
- package/admin/TenantEntryList.js.map +1 -1
- package/admin/features/permissions/feature.d.ts +1 -1
- package/api/features/AddCmsPermissions/AddCmsPermissions.d.ts +1 -1
- package/api/graphql/CreateTenantSchema.d.ts +2 -2
- package/api/graphql/CreateTenantSchema.js +8 -2
- package/api/graphql/CreateTenantSchema.js.map +1 -1
- package/api/graphql/DisableTenantSchema.d.ts +2 -2
- package/api/graphql/DisableTenantSchema.js +2 -2
- package/api/graphql/DisableTenantSchema.js.map +1 -1
- package/api/graphql/EnableTenantSchema.d.ts +2 -2
- package/api/graphql/EnableTenantSchema.js +2 -2
- package/api/graphql/EnableTenantSchema.js.map +1 -1
- package/api/graphql/GetCurrentTenantSchema.d.ts +2 -2
- package/api/graphql/GetCurrentTenantSchema.js +2 -2
- package/api/graphql/GetCurrentTenantSchema.js.map +1 -1
- package/api/graphql/InstallTenantSchema.d.ts +2 -2
- package/api/graphql/InstallTenantSchema.js +2 -2
- package/api/graphql/InstallTenantSchema.js.map +1 -1
- package/package.json +17 -19
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.d.ts +0 -16
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +0 -18
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +0 -1
|
@@ -1,42 +1,31 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
import { useMutation } from "@apollo/react-hooks";
|
|
3
2
|
import { useToast } from "@webiny/admin-ui";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
const useInstallTenant = (tenant)=>{
|
|
3
|
+
import { useInstallTenant } from "../../InstallTenant/index.js";
|
|
4
|
+
const useInstallTenant_useInstallTenant = (tenant)=>{
|
|
7
5
|
const toast = useToast();
|
|
8
|
-
const
|
|
9
|
-
const [runMutation, mutation] = useMutation(INSTALL_TENANT);
|
|
6
|
+
const hook = useInstallTenant();
|
|
10
7
|
const installTenant = useCallback(async ()=>{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
8
|
+
try {
|
|
9
|
+
await hook.installTenant(tenant.entryId);
|
|
10
|
+
} catch (error) {
|
|
11
|
+
toast.showWarningToast({
|
|
12
|
+
title: "Could not install tenant",
|
|
13
|
+
description: error.message,
|
|
14
|
+
duration: 1 / 0
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
21
18
|
toast.showSuccessToast({
|
|
22
19
|
title: "Tenant installed successfully!"
|
|
23
20
|
});
|
|
24
|
-
updateRecordInCache({
|
|
25
|
-
...tenant,
|
|
26
|
-
values: {
|
|
27
|
-
...tenant.values,
|
|
28
|
-
status: "enabled",
|
|
29
|
-
isInstalled: true
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
21
|
}, [
|
|
33
22
|
tenant
|
|
34
23
|
]);
|
|
35
24
|
return {
|
|
36
25
|
installTenant,
|
|
37
|
-
loading:
|
|
26
|
+
loading: hook.loading
|
|
38
27
|
};
|
|
39
28
|
};
|
|
40
|
-
export { useInstallTenant };
|
|
29
|
+
export { useInstallTenant_useInstallTenant as useInstallTenant };
|
|
41
30
|
|
|
42
31
|
//# sourceMappingURL=useInstallTenant.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/TenantEntryList/InstallTenantButton/useInstallTenant.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/useInstallTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/InstallTenantButton/useInstallTenant.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/useInstallTenant.ts"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useToast } from \"@webiny/admin-ui\";\nimport { TenantEntry } from \"../../types.js\";\nimport { useInstallTenant as baseInstallTenant } from \"~/admin/InstallTenant/index.js\";\n\nexport const useInstallTenant = (tenant: TenantEntry) => {\n const toast = useToast();\n const hook = baseInstallTenant();\n\n const installTenant = useCallback(async () => {\n try {\n await hook.installTenant(tenant.entryId);\n } catch (error) {\n toast.showWarningToast({\n title: \"Could not install tenant\",\n description: error.message,\n duration: Infinity\n });\n return;\n }\n\n toast.showSuccessToast({ title: \"Tenant installed successfully!\" });\n }, [tenant]);\n\n return { installTenant, loading: hook.loading };\n};\n"],"names":["useInstallTenant","tenant","toast","useToast","hook","baseInstallTenant","installTenant","useCallback","error","Infinity"],"mappings":";;;AAKO,MAAMA,oCAAmB,CAACC;IAC7B,MAAMC,QAAQC;IACd,MAAMC,OAAOC;IAEb,MAAMC,gBAAgBC,YAAY;QAC9B,IAAI;YACA,MAAMH,KAAK,aAAa,CAACH,OAAO,OAAO;QAC3C,EAAE,OAAOO,OAAO;YACZN,MAAM,gBAAgB,CAAC;gBACnB,OAAO;gBACP,aAAaM,MAAM,OAAO;gBAC1B,UAAUC,KAAQ;YACtB;YACA;QACJ;QAEAP,MAAM,gBAAgB,CAAC;YAAE,OAAO;QAAiC;IACrE,GAAG;QAACD;KAAO;IAEX,OAAO;QAAEK;QAAe,SAASF,KAAK,OAAO;IAAC;AAClD"}
|
|
@@ -4,7 +4,6 @@ import { useTenantContext } from "@webiny/app-admin";
|
|
|
4
4
|
const ManageTenant = ({ tenant })=>{
|
|
5
5
|
const { setTenant } = useTenantContext();
|
|
6
6
|
const switchToTenant = useCallback(()=>{
|
|
7
|
-
localStorage.removeItem("webiny_wb_page_latest_visited_folder");
|
|
8
7
|
setTenant(tenant.entryId);
|
|
9
8
|
}, [
|
|
10
9
|
tenant
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/TenantEntryList/ManageTenant.js","sources":["../../../src/admin/TenantEntryList/ManageTenant.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { useTenantContext } from \"@webiny/app-admin\";\nimport type { TenantEntry } from \"../types.js\";\n\ninterface ManageTenantProps {\n tenant: TenantEntry;\n}\n\nexport const ManageTenant = ({ tenant }: ManageTenantProps) => {\n const { setTenant } = useTenantContext();\n const switchToTenant = useCallback(() => {\n
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/ManageTenant.js","sources":["../../../src/admin/TenantEntryList/ManageTenant.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Button } from \"@webiny/admin-ui\";\nimport { useTenantContext } from \"@webiny/app-admin\";\nimport type { TenantEntry } from \"../types.js\";\n\ninterface ManageTenantProps {\n tenant: TenantEntry;\n}\n\nexport const ManageTenant = ({ tenant }: ManageTenantProps) => {\n const { setTenant } = useTenantContext();\n const switchToTenant = useCallback(() => {\n setTenant(tenant.entryId);\n }, [tenant]);\n\n return <Button variant={\"secondary\"} onClick={switchToTenant} text={\"Manage\"} />;\n};\n"],"names":["ManageTenant","tenant","setTenant","useTenantContext","switchToTenant","useCallback","Button"],"mappings":";;;AASO,MAAMA,eAAe,CAAC,EAAEC,MAAM,EAAqB;IACtD,MAAM,EAAEC,SAAS,EAAE,GAAGC;IACtB,MAAMC,iBAAiBC,YAAY;QAC/BH,UAAUD,OAAO,OAAO;IAC5B,GAAG;QAACA;KAAO;IAEX,OAAO,WAAP,GAAO,oBAACK,QAAMA;QAAC,SAAS;QAAa,SAASF;QAAgB,MAAM;;AACxE"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import react from "react";
|
|
2
2
|
import { Icon, Link, Text } from "@webiny/admin-ui";
|
|
3
3
|
import { ReactComponent } from "@webiny/icons/description.svg";
|
|
4
|
-
import { ContentEntryListConfig } from "@webiny/app-headless-cms";
|
|
4
|
+
import { ContentEntryListConfig, Routes } from "@webiny/app-headless-cms";
|
|
5
5
|
import { FolderNameCell } from "./FolderNameCell.js";
|
|
6
|
-
import {
|
|
6
|
+
import { useContentEntriesPresenter } from "@webiny/app-headless-cms/exports/admin/cms/entry/list.js";
|
|
7
|
+
import { useRouter } from "@webiny/app-admin";
|
|
7
8
|
const TenantName = ({ tenant })=>{
|
|
8
|
-
const
|
|
9
|
+
const presenter = useContentEntriesPresenter();
|
|
10
|
+
const { getLink } = useRouter();
|
|
11
|
+
const url = getLink(Routes.ContentEntries.List, {
|
|
12
|
+
modelId: presenter.vm.model.modelId,
|
|
13
|
+
folderId: presenter.folders.vm.currentFolderId ?? void 0,
|
|
14
|
+
id: tenant.id
|
|
15
|
+
});
|
|
9
16
|
return /*#__PURE__*/ react.createElement("div", {
|
|
10
17
|
className: "flex flex-col gap-y-[3px]"
|
|
11
18
|
}, /*#__PURE__*/ react.createElement(Link, {
|
|
12
|
-
to:
|
|
19
|
+
to: url,
|
|
13
20
|
variant: "secondary",
|
|
14
21
|
className: "truncate no-underline!"
|
|
15
22
|
}, /*#__PURE__*/ react.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/TenantEntryList/TenantNameCell.js","sources":["../../../src/admin/TenantEntryList/TenantNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Link, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as File } from \"@webiny/icons/description.svg\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { FolderNameCell } from \"./FolderNameCell.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList/TenantNameCell.js","sources":["../../../src/admin/TenantEntryList/TenantNameCell.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Link, Text } from \"@webiny/admin-ui\";\nimport { ReactComponent as File } from \"@webiny/icons/description.svg\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { FolderNameCell } from \"./FolderNameCell.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useContentEntriesPresenter } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { useRouter } from \"@webiny/app-admin\";\nimport { Routes } from \"@webiny/app-headless-cms\";\n\ninterface TenantNameProps {\n tenant: TenantEntry;\n}\n\nconst TenantName = ({ tenant }: TenantNameProps) => {\n const presenter = useContentEntriesPresenter();\n const { getLink } = useRouter();\n\n const url = getLink(Routes.ContentEntries.List, {\n modelId: presenter.vm.model.modelId,\n folderId: presenter.folders.vm.currentFolderId ?? undefined,\n id: tenant.id\n });\n\n return (\n <div className={\"flex flex-col gap-y-[3px]\"}>\n <Link to={url} variant={\"secondary\"} className={\"truncate no-underline!\"}>\n <div className={\"flex w-full items-center\"}>\n <Icon\n size={\"sm\"}\n color={\"neutral-strong\"}\n className={\"mr-xs\"}\n icon={<File />}\n label={`Tenant - ${tenant.values.name}`}\n />\n <Text as={\"div\"} className={\"truncate min-w-0 shrink\"}>\n {tenant.values.name}\n </Text>\n </div>\n </Link>\n <Text as={\"div\"} size={\"sm\"} className={\"text-neutral-dimmed\"}>\n ID: {tenant.entryId}\n </Text>\n </div>\n );\n};\n\nexport const TenantNameCell = () => {\n const { useTableRow, isFolderRow } = ContentEntryListConfig.Browser.Table.Column;\n const { row } = useTableRow<TenantEntry>();\n\n if (isFolderRow(row)) {\n return <FolderNameCell folder={row.data} />;\n }\n\n return <TenantName tenant={row.data} />;\n};\n"],"names":["TenantName","tenant","presenter","useContentEntriesPresenter","getLink","useRouter","url","Routes","undefined","Link","Icon","File","Text","TenantNameCell","useTableRow","isFolderRow","ContentEntryListConfig","row","FolderNameCell"],"mappings":";;;;;;;AAcA,MAAMA,aAAa,CAAC,EAAEC,MAAM,EAAmB;IAC3C,MAAMC,YAAYC;IAClB,MAAM,EAAEC,OAAO,EAAE,GAAGC;IAEpB,MAAMC,MAAMF,QAAQG,OAAO,cAAc,CAAC,IAAI,EAAE;QAC5C,SAASL,UAAU,EAAE,CAAC,KAAK,CAAC,OAAO;QACnC,UAAUA,UAAU,OAAO,CAAC,EAAE,CAAC,eAAe,IAAIM;QAClD,IAAIP,OAAO,EAAE;IACjB;IAEA,OAAO,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAACQ,MAAIA;QAAC,IAAIH;QAAK,SAAS;QAAa,WAAW;qBAC5C,oBAAC;QAAI,WAAW;qBACZ,oBAACI,MAAIA;QACD,MAAM;QACN,OAAO;QACP,WAAW;QACX,oBAAM,oBAACC,gBAAIA;QACX,OAAO,CAAC,SAAS,EAAEV,OAAO,MAAM,CAAC,IAAI,EAAE;sBAE3C,oBAACW,MAAIA;QAAC,IAAI;QAAO,WAAW;OACvBX,OAAO,MAAM,CAAC,IAAI,mBAI/B,oBAACW,MAAIA;QAAC,IAAI;QAAO,MAAM;QAAM,WAAW;OAAuB,QACtDX,OAAO,OAAO;AAInC;AAEO,MAAMY,iBAAiB;IAC1B,MAAM,EAAEC,WAAW,EAAEC,WAAW,EAAE,GAAGC,uBAAuB,OAAO,CAAC,KAAK,CAAC,MAAM;IAChF,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAEhB,IAAIC,YAAYE,MACZ,OAAO,WAAP,GAAO,oBAACC,gBAAcA;QAAC,QAAQD,IAAI,IAAI;;IAG3C,OAAO,WAAP,GAAO,oBAACjB,YAAUA;QAAC,QAAQiB,IAAI,IAAI;;AACvC"}
|
package/admin/TenantEntryList.js
CHANGED
|
@@ -19,7 +19,7 @@ const WithDisableAction = ({ children })=>{
|
|
|
19
19
|
label: "Disable",
|
|
20
20
|
onAction: disableEntry,
|
|
21
21
|
"data-testid": "aco.actions.entry.delete",
|
|
22
|
-
|
|
22
|
+
variant: "destructive"
|
|
23
23
|
});
|
|
24
24
|
return /*#__PURE__*/ react.createElement(react.Fragment, null, children);
|
|
25
25
|
};
|
|
@@ -32,7 +32,12 @@ const DeleteActionDecorator = EntryAction.createDecorator((Original)=>function(p
|
|
|
32
32
|
});
|
|
33
33
|
return /*#__PURE__*/ react.createElement(Original, props);
|
|
34
34
|
});
|
|
35
|
-
const TenantEntryList = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DeleteActionDecorator, null), /*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.
|
|
35
|
+
const TenantEntryList = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(DeleteActionDecorator, null), /*#__PURE__*/ react.createElement(ContentEntryListConfig, null, /*#__PURE__*/ react.createElement(Browser.BreadcrumbRoot, {
|
|
36
|
+
label: "Tenant Manager",
|
|
37
|
+
modelIds: [
|
|
38
|
+
TENANT_MODEL_ID
|
|
39
|
+
]
|
|
40
|
+
}), /*#__PURE__*/ react.createElement(Browser.Table.Column, {
|
|
36
41
|
hideable: false,
|
|
37
42
|
name: "name",
|
|
38
43
|
header: "Name",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin/TenantEntryList.js","sources":["../../src/admin/TenantEntryList.tsx"],"sourcesContent":["import React from \"react\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { ReactComponent as DisableIcon } from \"@webiny/icons/power_off.svg\";\nimport { TenantCell } from \"./TenantEntryList/TenantCell.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useDisableTenantDialog } from \"~/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js\";\nimport { TenantNameCell } from \"~/admin/TenantEntryList/TenantNameCell.js\";\n\nconst { Browser } = ContentEntryListConfig;\nconst EntryAction = Browser.Entry.Action;\nconst { useTableRow } = Browser.Table.Column;\n\ninterface WithDisableActionProps {\n children: React.ReactNode;\n}\n\nconst WithDisableAction = ({ children }: WithDisableActionProps) => {\n // useTableRow() allows you to access the entire data of the current row.\n const { row } = useTableRow<TenantEntry>();\n const { disableEntry } = useDisableTenantDialog({ record: row.data });\n\n if (row.data.values.status === \"enabled\") {\n return (\n <EntryAction.OptionsMenuItem\n icon={<DisableIcon />}\n label={\"Disable\"}\n onAction={disableEntry}\n data-testid={\"aco.actions.entry.delete\"}\n
|
|
1
|
+
{"version":3,"file":"admin/TenantEntryList.js","sources":["../../src/admin/TenantEntryList.tsx"],"sourcesContent":["import React from \"react\";\nimport { useModel } from \"@webiny/app-headless-cms/exports/admin/cms.js\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms/exports/admin/cms/entry/list.js\";\nimport { ReactComponent as DisableIcon } from \"@webiny/icons/power_off.svg\";\nimport { TenantCell } from \"./TenantEntryList/TenantCell.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport type { TenantEntry } from \"~/admin/types.js\";\nimport { useDisableTenantDialog } from \"~/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js\";\nimport { TenantNameCell } from \"~/admin/TenantEntryList/TenantNameCell.js\";\n\nconst { Browser } = ContentEntryListConfig;\nconst EntryAction = Browser.Entry.Action;\nconst { useTableRow } = Browser.Table.Column;\n\ninterface WithDisableActionProps {\n children: React.ReactNode;\n}\n\nconst WithDisableAction = ({ children }: WithDisableActionProps) => {\n // useTableRow() allows you to access the entire data of the current row.\n const { row } = useTableRow<TenantEntry>();\n const { disableEntry } = useDisableTenantDialog({ record: row.data });\n\n if (row.data.values.status === \"enabled\") {\n return (\n <EntryAction.OptionsMenuItem\n icon={<DisableIcon />}\n label={\"Disable\"}\n onAction={disableEntry}\n data-testid={\"aco.actions.entry.delete\"}\n variant={\"destructive\"}\n />\n );\n }\n\n return <>{children}</>;\n};\n\nconst DeleteActionDecorator = EntryAction.createDecorator(Original => {\n return function DeleteAction(props) {\n const { model } = useModel();\n\n if (model.modelId !== TENANT_MODEL_ID) {\n return <Original {...props} />;\n }\n\n if (props.name === \"delete\") {\n return (\n <Original\n {...props}\n element={<WithDisableAction>{props.element}</WithDisableAction>}\n />\n );\n }\n\n return <Original {...props} />;\n };\n});\n\nexport const TenantEntryList = () => {\n return (\n <>\n <DeleteActionDecorator />\n <ContentEntryListConfig>\n <Browser.BreadcrumbRoot label={\"Tenant Manager\"} modelIds={[TENANT_MODEL_ID]} />\n <Browser.Table.Column\n hideable={false}\n name={\"name\"}\n header={\"Name\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantNameCell />}\n />\n <Browser.Table.Column\n name={\"tenant\"}\n header={\"Tenant\"}\n modelIds={[TENANT_MODEL_ID]}\n cell={<TenantCell />}\n before={\"actions\"}\n />\n </ContentEntryListConfig>\n </>\n );\n};\n"],"names":["Browser","ContentEntryListConfig","EntryAction","useTableRow","WithDisableAction","children","row","disableEntry","useDisableTenantDialog","DisableIcon","DeleteActionDecorator","Original","props","model","useModel","TENANT_MODEL_ID","TenantEntryList","TenantNameCell","TenantCell"],"mappings":";;;;;;;;AAUA,MAAM,EAAEA,SAAAA,OAAO,EAAE,GAAGC;AACpB,MAAMC,cAAcF,QAAQ,KAAK,CAAC,MAAM;AACxC,MAAM,EAAEG,aAAAA,WAAW,EAAE,GAAGH,QAAQ,KAAK,CAAC,MAAM;AAM5C,MAAMI,oBAAoB,CAAC,EAAEC,QAAQ,EAA0B;IAE3D,MAAM,EAAEC,GAAG,EAAE,GAAGH;IAChB,MAAM,EAAEI,YAAY,EAAE,GAAGC,uBAAuB;QAAE,QAAQF,IAAI,IAAI;IAAC;IAEnE,IAAIA,AAA2B,cAA3BA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EACtB,OAAO,WAAP,GACI,oBAACJ,YAAY,eAAe;QACxB,oBAAM,oBAACO,gBAAWA;QAClB,OAAO;QACP,UAAUF;QACV,eAAa;QACb,SAAS;;IAKrB,OAAO,WAAP,GAAO,0CAAGF;AACd;AAEA,MAAMK,wBAAwBR,YAAY,eAAe,CAACS,CAAAA,WAC/C,SAAsBC,KAAK;QAC9B,MAAM,EAAEC,KAAK,EAAE,GAAGC;QAElB,IAAID,MAAM,OAAO,KAAKE,iBAClB,OAAO,WAAP,GAAO,oBAACJ,UAAaC;QAGzB,IAAIA,AAAe,aAAfA,MAAM,IAAI,EACV,OAAO,WAAP,GACI,oBAACD,UAAAA;YACI,GAAGC,KAAK;YACT,uBAAS,oBAACR,mBAAiBA,MAAEQ,MAAM,OAAO;;QAKtD,OAAO,WAAP,GAAO,oBAACD,UAAaC;IACzB;AAGG,MAAMI,kBAAkB,IACpB,WAAP,GACI,wDACI,oBAACN,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACT,wBAAsBA,MAAAA,WAAAA,GACnB,oBAACD,QAAQ,cAAc;QAAC,OAAO;QAAkB,UAAU;YAACe;SAAgB;sBAC5E,oBAACf,QAAQ,KAAK,CAAC,MAAM;QACjB,UAAU;QACV,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACE,gBAAcA;sBAEzB,oBAACjB,QAAQ,KAAK,CAAC,MAAM;QACjB,MAAM;QACN,QAAQ;QACR,UAAU;YAACe;SAAgB;QAC3B,oBAAM,oBAACG,YAAUA;QACjB,QAAQ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const TmPermissionsFeature: import("@webiny/feature/admin").FeatureDefinition<{
|
|
1
|
+
export declare const TmPermissionsFeature: import("@webiny/feature/admin/createFeature.js").FeatureDefinition<{
|
|
2
2
|
permissions: {
|
|
3
3
|
canAccess: (entityId: never) => boolean;
|
|
4
4
|
canAction: (action: string, entityId: never) => boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
|
|
2
2
|
declare class AddCmsPermissions implements PermissionTransformer.Interface {
|
|
3
|
-
execute(permission: PermissionTransformer.Permission): PermissionTransformer.Permission | PermissionTransformer.Permission
|
|
3
|
+
execute(permission: PermissionTransformer.Permission): PermissionTransformer.Permission[] | PermissionTransformer.Permission;
|
|
4
4
|
}
|
|
5
5
|
declare const _default: typeof AddCmsPermissions & {
|
|
6
6
|
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js").IPermissionTransformer>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
2
|
import { ListModelsUseCase } from "@webiny/api-headless-cms/exports/api/cms/model.js";
|
|
3
3
|
import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
|
|
4
4
|
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
@@ -11,6 +11,6 @@ declare class CreateTenantSchema implements GraphQLSchemaFactory.Interface {
|
|
|
11
11
|
private getExtensionsInput;
|
|
12
12
|
}
|
|
13
13
|
declare const _default: typeof CreateTenantSchema & {
|
|
14
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
|
|
15
15
|
};
|
|
16
16
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
2
|
-
import { ErrorResponse, Response } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql";
|
|
3
3
|
import { renderInputFields } from "@webiny/api-headless-cms/utils/renderInputFields.js";
|
|
4
4
|
import { CreateTenantUseCase } from "../features/CreateTenant/abstractions.js";
|
|
5
5
|
import { ListModelsUseCase } from "@webiny/api-headless-cms/exports/api/cms/model.js";
|
|
@@ -55,6 +55,12 @@ class CreateTenantSchema {
|
|
|
55
55
|
];
|
|
56
56
|
const models = modelsResult.value;
|
|
57
57
|
const model = models.find((m)=>m.modelId === TENANT_MODEL_ID);
|
|
58
|
+
if (!model) return [
|
|
59
|
+
{
|
|
60
|
+
typeDefs: "",
|
|
61
|
+
fields: "extensions: JSON"
|
|
62
|
+
}
|
|
63
|
+
];
|
|
58
64
|
const inputCreateFields = renderInputFields({
|
|
59
65
|
models,
|
|
60
66
|
model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/graphql/CreateTenantSchema.js","sources":["../../../src/api/graphql/CreateTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/
|
|
1
|
+
{"version":3,"file":"api/graphql/CreateTenantSchema.js","sources":["../../../src/api/graphql/CreateTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { renderInputFields } from \"@webiny/api-headless-cms/utils/renderInputFields.js\";\nimport { CreateTenantUseCase } from \"../features/CreateTenant/abstractions.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/exports/api/cms/model.js\";\nimport { TENANT_MODEL_ID } from \"~/shared/constants.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\n\nclass CreateTenantSchema implements GraphQLSchemaFactory.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private readonly fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface\n ) {}\n\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n const inputCreateFields = await this.getExtensionsInput();\n\n builder.addTypeDefs(/* GraphQL */ `\n ${inputCreateFields.map(f => f.typeDefs).join(\"\\n\")}\n\n input CreateTenantInput {\n id: ID\n name: String!\n description: String\n ${inputCreateFields.map(f => f.fields).join(\"\\n\")}\n }\n `);\n\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n createTenant(input: CreateTenantInput!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ input: CreateTenantUseCase.Input }>({\n path: \"TenantManagerMutation.createTenant\",\n dependencies: [CreateTenantUseCase],\n resolver: (createTenant: CreateTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await createTenant.execute(args.input);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n\n private async getExtensionsInput() {\n const modelsResult = await this.identityContext.withoutAuthorization(() => {\n return this.listModelsUseCase.execute({\n includePlugins: true,\n includePrivate: false\n });\n });\n\n if (modelsResult.isFail()) {\n return [\n {\n typeDefs: \"\",\n fields: \"extensions: JSON\"\n }\n ];\n }\n\n const models = modelsResult.value;\n const model = models.find(m => m.modelId === TENANT_MODEL_ID);\n\n if (!model) {\n return [{ typeDefs: \"\", fields: \"extensions: JSON\" }];\n }\n\n const inputCreateFields = renderInputFields({\n models,\n model,\n fields: model.fields.filter(f => f.fieldId === \"extensions\"),\n fieldRegistry: this.fieldRegistry\n });\n\n return inputCreateFields;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: CreateTenantSchema,\n dependencies: [IdentityContext, ListModelsUseCase, CmsModelFieldToGraphQLRegistry]\n});\n"],"names":["CreateTenantSchema","identityContext","listModelsUseCase","fieldRegistry","builder","inputCreateFields","f","CreateTenantUseCase","createTenant","args","result","ErrorResponse","Response","modelsResult","models","model","m","TENANT_MODEL_ID","renderInputFields","GraphQLSchemaFactory","IdentityContext","ListModelsUseCase","CmsModelFieldToGraphQLRegistry"],"mappings":";;;;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,iBAA8C,EACrCC,aAAuD,CAC1E;aAHUF,eAAe,GAAfA;aACAC,iBAAiB,GAAjBA;aACSC,aAAa,GAAbA;IAClB;IAEH,MAAM,QACFC,OAA2C,EACA;QAC3C,MAAMC,oBAAoB,MAAM,IAAI,CAAC,kBAAkB;QAEvDD,QAAQ,WAAW,CAAe,CAAC;YAC/B,EAAEC,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM;;;;;;gBAMhD,EAAED,kBAAkB,GAAG,CAACC,CAAAA,IAAKA,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;;QAE1D,CAAC;QAEDF,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuC;YACtD,MAAM;YACN,cAAc;gBAACG;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,KAAK;oBAEpD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOR;IACX;IAEA,MAAc,qBAAqB;QAC/B,MAAMS,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAClC,gBAAgB;gBAChB,gBAAgB;YACpB;QAGJ,IAAIA,aAAa,MAAM,IACnB,OAAO;YACH;gBACI,UAAU;gBACV,QAAQ;YACZ;SACH;QAGL,MAAMC,SAASD,aAAa,KAAK;QACjC,MAAME,QAAQD,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKC;QAE7C,IAAI,CAACF,OACD,OAAO;YAAC;gBAAE,UAAU;gBAAI,QAAQ;YAAmB;SAAE;QAGzD,MAAMV,oBAAoBa,kBAAkB;YACxCJ;YACAC;YACA,QAAQA,MAAM,MAAM,CAAC,MAAM,CAACT,CAAAA,IAAKA,AAAc,iBAAdA,EAAE,OAAO;YAC1C,eAAe,IAAI,CAAC,aAAa;QACrC;QAEA,OAAOD;IACX;AACJ;AAEA,mCAAec,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBnB;IAChB,cAAc;QAACoB;QAAiBC;QAAmBC;KAA+B;AACtF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
2
|
declare class DisableTenantSchema implements GraphQLSchemaFactory.Interface {
|
|
3
3
|
execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
|
|
4
4
|
}
|
|
5
5
|
declare const _default: typeof DisableTenantSchema & {
|
|
6
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
|
|
7
7
|
};
|
|
8
8
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
2
|
-
import { ErrorResponse, Response } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql";
|
|
3
3
|
import { DisableTenantUseCase } from "../features/DisableTenant/abstractions.js";
|
|
4
4
|
class DisableTenantSchema {
|
|
5
5
|
async execute(builder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/graphql/DisableTenantSchema.js","sources":["../../../src/api/graphql/DisableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/
|
|
1
|
+
{"version":3,"file":"api/graphql/DisableTenantSchema.js","sources":["../../../src/api/graphql/DisableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { DisableTenantUseCase } from \"../features/DisableTenant/abstractions.js\";\n\nclass DisableTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n disableTenant(tenantId: ID!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.disableTenant\",\n dependencies: [DisableTenantUseCase],\n resolver: (disableTenant: DisableTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await disableTenant.execute(args.tenantId);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: DisableTenantSchema,\n dependencies: []\n});\n"],"names":["DisableTenantSchema","builder","DisableTenantUseCase","disableTenant","args","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;aAAqB;YACpC,UAAU,CAACC,gBACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,cAAc,OAAO,CAACC,KAAK,QAAQ;oBAExD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAON;IACX;AACJ;AAEA,oCAAeO,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
2
|
declare class EnableTenantSchema implements GraphQLSchemaFactory.Interface {
|
|
3
3
|
execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
|
|
4
4
|
}
|
|
5
5
|
declare const _default: typeof EnableTenantSchema & {
|
|
6
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
|
|
7
7
|
};
|
|
8
8
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
2
|
-
import { ErrorResponse, Response } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql";
|
|
3
3
|
import { EnableTenantUseCase } from "../features/EnableTenant/abstractions.js";
|
|
4
4
|
class EnableTenantSchema {
|
|
5
5
|
async execute(builder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/graphql/EnableTenantSchema.js","sources":["../../../src/api/graphql/EnableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/
|
|
1
|
+
{"version":3,"file":"api/graphql/EnableTenantSchema.js","sources":["../../../src/api/graphql/EnableTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { EnableTenantUseCase } from \"../features/EnableTenant/abstractions.js\";\n\nclass EnableTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n extend type TenantManagerMutation {\n enableTenant(tenantId: ID!): BooleanResponse\n }\n `);\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.enableTenant\",\n dependencies: [EnableTenantUseCase],\n resolver: (enableTenant: EnableTenantUseCase.Interface) => {\n return async ({ args }) => {\n const result = await enableTenant.execute(args.tenantId);\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: EnableTenantSchema,\n dependencies: []\n});\n"],"names":["EnableTenantSchema","builder","EnableTenantUseCase","enableTenant","args","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;QAInC,CAAC;QAEDA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;aAAoB;YACnC,UAAU,CAACC,eACA,OAAO,EAAEC,IAAI,EAAE;oBAClB,MAAMC,SAAS,MAAMF,aAAa,OAAO,CAACC,KAAK,QAAQ;oBAEvD,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAGzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAON;IACX;AACJ;AAEA,mCAAeO,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBR;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
2
|
declare class GetCurrentTenantSchema implements GraphQLSchemaFactory.Interface {
|
|
3
3
|
execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
|
|
4
4
|
}
|
|
5
5
|
declare const _default: typeof GetCurrentTenantSchema & {
|
|
6
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
|
|
7
7
|
};
|
|
8
8
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ErrorResponse, Response } from "@webiny/
|
|
2
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
1
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql";
|
|
2
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
3
3
|
import { GetCurrentTenantUseCase } from "../features/GetCurrentTenant/abstractions.js";
|
|
4
4
|
class GetCurrentTenantSchema {
|
|
5
5
|
async execute(builder) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/graphql/GetCurrentTenantSchema.js","sources":["../../../src/api/graphql/GetCurrentTenantSchema.ts"],"sourcesContent":["import { Response } from \"@webiny/
|
|
1
|
+
{"version":3,"file":"api/graphql/GetCurrentTenantSchema.js","sources":["../../../src/api/graphql/GetCurrentTenantSchema.ts"],"sourcesContent":["import { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { GetCurrentTenantUseCase } from \"../features/GetCurrentTenant/abstractions.js\";\n\nclass GetCurrentTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type TenantResponse {\n data: Tenant\n error: Error\n }\n\n type Tenant {\n id: ID!\n values: JSON!\n }\n\n type TenantManagerQuery {\n getCurrentTenant: TenantResponse\n }\n\n extend type Query {\n tenantManager: TenantManagerQuery\n }\n `);\n\n builder.addResolver({\n path: \"Query.tenantManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver({\n path: \"TenantManagerQuery.getCurrentTenant\",\n dependencies: [GetCurrentTenantUseCase],\n resolver: (getCurrentTenant: GetCurrentTenantUseCase.Interface) => {\n return async () => {\n const result = await getCurrentTenant.execute();\n\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(result.value);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: GetCurrentTenantSchema,\n dependencies: []\n});\n"],"names":["GetCurrentTenantSchema","builder","GetCurrentTenantUseCase","getCurrentTenant","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;AAKA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;;;;;;;;;;;QAkBnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IACC,IAAO,EAAC;QAEvB;QAEAA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,cAAc;gBAACC;aAAwB;YACvC,UAAU,CAACC,mBACA;oBACH,MAAMC,SAAS,MAAMD,iBAAiB,OAAO;oBAE7C,IAAIC,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAEzC,OAAO,IAAIE,SAASF,OAAO,KAAK;gBACpC;QAER;QAEA,OAAOH;IACX;AACJ;AAEA,uCAAeM,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBP;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
2
|
declare class InstallTenantSchema implements GraphQLSchemaFactory.Interface {
|
|
3
3
|
execute(builder: GraphQLSchemaFactory.SchemaBuilder): Promise<GraphQLSchemaFactory.SchemaBuilder>;
|
|
4
4
|
}
|
|
5
5
|
declare const _default: typeof InstallTenantSchema & {
|
|
6
|
-
__abstraction: import("@webiny/di").Abstraction<import("@webiny/
|
|
6
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-graphql/graphql/abstractions.public.js").IGraphQLSchemaFactory>;
|
|
7
7
|
};
|
|
8
8
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GraphQLSchemaFactory } from "@webiny/
|
|
2
|
-
import { ErrorResponse, Response } from "@webiny/
|
|
1
|
+
import { GraphQLSchemaFactory } from "@webiny/api-graphql/graphql/abstractions.js";
|
|
2
|
+
import { ErrorResponse, Response } from "@webiny/api-graphql";
|
|
3
3
|
import { CreateAndInstallTenantUseCase } from "../features/CreateAndInstallTenant/abstractions.js";
|
|
4
4
|
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
5
5
|
import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api/graphql/InstallTenantSchema.js","sources":["../../../src/api/graphql/InstallTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/
|
|
1
|
+
{"version":3,"file":"api/graphql/InstallTenantSchema.js","sources":["../../../src/api/graphql/InstallTenantSchema.ts"],"sourcesContent":["import { GraphQLSchemaFactory } from \"@webiny/api-graphql/graphql/abstractions.js\";\nimport { Response } from \"@webiny/api-graphql\";\nimport { ErrorResponse } from \"@webiny/api-graphql\";\nimport { CreateAndInstallTenantUseCase } from \"../features/CreateAndInstallTenant/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/exports/api/security.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\n\nclass InstallTenantSchema implements GraphQLSchemaFactory.Interface {\n async execute(\n builder: GraphQLSchemaFactory.SchemaBuilder\n ): Promise<GraphQLSchemaFactory.SchemaBuilder> {\n builder.addTypeDefs(/* GraphQL */ `\n type TenantManagerMutation {\n installTenant(tenantId: ID!): BooleanResponse\n }\n\n extend type Mutation {\n tenantManager: TenantManagerMutation\n }\n `);\n\n builder.addResolver({\n path: \"Mutation.tenantManager\",\n resolver: () => {\n return () => ({});\n }\n });\n\n builder.addResolver<{ tenantId: string }>({\n path: \"TenantManagerMutation.installTenant\",\n dependencies: [IdentityContext, CreateAndInstallTenantUseCase],\n resolver: (\n identityContext: IdentityContext.Interface,\n installTenant: CreateAndInstallTenantUseCase.Interface\n ) => {\n return async ({ args }) => {\n if (!identityContext.getPermission(\"tm.tenant\")) {\n return new NotAuthorizedResponse();\n }\n\n const result = await installTenant.execute(args.tenantId);\n if (result.isFail()) {\n return new ErrorResponse(result.error);\n }\n return new Response(true);\n };\n }\n });\n\n return builder;\n }\n}\n\nexport default GraphQLSchemaFactory.createImplementation({\n implementation: InstallTenantSchema,\n dependencies: []\n});\n"],"names":["InstallTenantSchema","builder","IdentityContext","CreateAndInstallTenantUseCase","identityContext","installTenant","args","NotAuthorizedResponse","result","ErrorResponse","Response","GraphQLSchemaFactory"],"mappings":";;;;;AAOA,MAAMA;IACF,MAAM,QACFC,OAA2C,EACA;QAC3CA,QAAQ,WAAW,CAAe,CAAC;;;;;;;;QAQnC,CAAC;QAEDA,QAAQ,WAAW,CAAC;YAChB,MAAM;YACN,UAAU,IACC,IAAO,EAAC;QAEvB;QAEAA,QAAQ,WAAW,CAAuB;YACtC,MAAM;YACN,cAAc;gBAACC;gBAAiBC;aAA8B;YAC9D,UAAU,CACNC,iBACAC,gBAEO,OAAO,EAAEC,IAAI,EAAE;oBAClB,IAAI,CAACF,gBAAgB,aAAa,CAAC,cAC/B,OAAO,IAAIG;oBAGf,MAAMC,SAAS,MAAMH,cAAc,OAAO,CAACC,KAAK,QAAQ;oBACxD,IAAIE,OAAO,MAAM,IACb,OAAO,IAAIC,cAAcD,OAAO,KAAK;oBAEzC,OAAO,IAAIE,SAAS;gBACxB;QAER;QAEA,OAAOT;IACX;AACJ;AAEA,oCAAeU,qBAAqB,oBAAoB,CAAC;IACrD,gBAAgBX;IAChB,cAAc,EAAE;AACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/tenant-manager",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0-alpha.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -15,29 +15,27 @@
|
|
|
15
15
|
"author": "Webiny Ltd.",
|
|
16
16
|
"license": "Webiny Enterprise",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@
|
|
19
|
-
"@webiny/
|
|
20
|
-
"@webiny/api-
|
|
21
|
-
"@webiny/api-headless-cms": "6.
|
|
22
|
-
"@webiny/app": "6.
|
|
23
|
-
"@webiny/app-aco": "6.
|
|
24
|
-
"@webiny/app-admin": "6.
|
|
25
|
-
"@webiny/app-headless-cms": "6.
|
|
26
|
-
"@webiny/feature": "6.
|
|
27
|
-
"@webiny/
|
|
28
|
-
"@webiny/
|
|
29
|
-
"@webiny/project": "6.
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"mobx": "6.16.1",
|
|
33
|
-
"mobx-react-lite": "4.1.1",
|
|
18
|
+
"@webiny/admin-ui": "6.6.0-alpha.1",
|
|
19
|
+
"@webiny/api-core": "6.6.0-alpha.1",
|
|
20
|
+
"@webiny/api-graphql": "6.6.0-alpha.1",
|
|
21
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.1",
|
|
22
|
+
"@webiny/app": "6.6.0-alpha.1",
|
|
23
|
+
"@webiny/app-aco": "6.6.0-alpha.1",
|
|
24
|
+
"@webiny/app-admin": "6.6.0-alpha.1",
|
|
25
|
+
"@webiny/app-headless-cms": "6.6.0-alpha.1",
|
|
26
|
+
"@webiny/feature": "6.6.0-alpha.1",
|
|
27
|
+
"@webiny/icons": "6.6.0-alpha.1",
|
|
28
|
+
"@webiny/project": "6.6.0-alpha.1",
|
|
29
|
+
"@webiny/project-aws": "6.6.0-alpha.1",
|
|
30
|
+
"mobx": "7.0.3",
|
|
31
|
+
"mobx-react-lite": "5.0.3",
|
|
34
32
|
"react": "18.3.1",
|
|
35
33
|
"react-dom": "18.3.1"
|
|
36
34
|
},
|
|
37
35
|
"devDependencies": {
|
|
38
|
-
"@webiny/build-tools": "6.
|
|
36
|
+
"@webiny/build-tools": "6.6.0-alpha.1",
|
|
39
37
|
"rimraf": "6.1.3",
|
|
40
|
-
"typescript": "
|
|
38
|
+
"typescript": "7.0.2"
|
|
41
39
|
},
|
|
42
40
|
"publishConfig": {
|
|
43
41
|
"access": "public"
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare const INSTALL_TENANT: import("graphql").DocumentNode;
|
|
2
|
-
export interface InstallTenantResponse {
|
|
3
|
-
tenantManager: {
|
|
4
|
-
installTenant: {
|
|
5
|
-
data: boolean;
|
|
6
|
-
error?: null;
|
|
7
|
-
} | {
|
|
8
|
-
data: null;
|
|
9
|
-
error: {
|
|
10
|
-
code: string;
|
|
11
|
-
message: string;
|
|
12
|
-
data: Record<string, any>;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import graphql_tag from "graphql-tag";
|
|
2
|
-
const INSTALL_TENANT = graphql_tag`
|
|
3
|
-
mutation InstallTenant($tenantId: ID!) {
|
|
4
|
-
tenantManager {
|
|
5
|
-
installTenant(tenantId: $tenantId) {
|
|
6
|
-
data
|
|
7
|
-
error {
|
|
8
|
-
code
|
|
9
|
-
message
|
|
10
|
-
data
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
`;
|
|
16
|
-
export { INSTALL_TENANT };
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=installTenant.gql.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin/TenantEntryList/InstallTenantButton/installTenant.gql.js","sources":["../../../../src/admin/TenantEntryList/InstallTenantButton/installTenant.gql.ts"],"sourcesContent":["import gql from \"graphql-tag\";\n\nexport const INSTALL_TENANT = gql`\n mutation InstallTenant($tenantId: ID!) {\n tenantManager {\n installTenant(tenantId: $tenantId) {\n data\n error {\n code\n message\n data\n }\n }\n }\n }\n`;\n\nexport interface InstallTenantResponse {\n tenantManager: {\n installTenant:\n | {\n data: boolean;\n error?: null;\n }\n | {\n data: null;\n error: {\n code: string;\n message: string;\n data: Record<string, any>;\n };\n };\n };\n}\n"],"names":["INSTALL_TENANT","gql"],"mappings":";AAEO,MAAMA,iBAAiBC,WAAG,CAAC;;;;;;;;;;;;;AAalC,CAAC"}
|