@webiny/tenant-manager 6.3.0-beta.4 → 6.4.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/TenantManager.js +8 -9
- package/TenantManager.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenant.js +15 -24
- package/admin/CurrentTenant/CurrentTenant.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenantGateway.js +18 -19
- package/admin/CurrentTenant/CurrentTenantGateway.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenantPresenter.js +26 -23
- package/admin/CurrentTenant/CurrentTenantPresenter.js.map +1 -1
- package/admin/CurrentTenant/CurrentTenantRepository.js +30 -29
- package/admin/CurrentTenant/CurrentTenantRepository.js.map +1 -1
- package/admin/CurrentTenant/abstractions.js +4 -12
- package/admin/CurrentTenant/abstractions.js.map +1 -1
- package/admin/CurrentTenant/feature.js +15 -14
- package/admin/CurrentTenant/feature.js.map +1 -1
- package/admin/CurrentTenant/useCurrentTenant.js +11 -16
- package/admin/CurrentTenant/useCurrentTenant.js.map +1 -1
- package/admin/CurrentTenantProvider.js +5 -8
- package/admin/CurrentTenantProvider.js.map +1 -1
- package/admin/DisableTenant/DisableTenantGateway.js +21 -22
- package/admin/DisableTenant/DisableTenantGateway.js.map +1 -1
- package/admin/DisableTenant/DisableTenantRepository.js +13 -10
- package/admin/DisableTenant/DisableTenantRepository.js.map +1 -1
- package/admin/DisableTenant/DisableTenantUseCase.js +13 -10
- package/admin/DisableTenant/DisableTenantUseCase.js.map +1 -1
- package/admin/DisableTenant/abstractions.js +4 -12
- package/admin/DisableTenant/abstractions.js.map +1 -1
- package/admin/DisableTenant/feature.js +15 -14
- package/admin/DisableTenant/feature.js.map +1 -1
- package/admin/DisableTenant/index.js +0 -2
- package/admin/DisableTenant/useDisableTenant.js +20 -20
- package/admin/DisableTenant/useDisableTenant.js.map +1 -1
- package/admin/EnableTenant/EnableTenantGateway.js +21 -22
- package/admin/EnableTenant/EnableTenantGateway.js.map +1 -1
- package/admin/EnableTenant/EnableTenantRepository.js +13 -10
- package/admin/EnableTenant/EnableTenantRepository.js.map +1 -1
- package/admin/EnableTenant/EnableTenantUseCase.js +13 -10
- package/admin/EnableTenant/EnableTenantUseCase.js.map +1 -1
- package/admin/EnableTenant/abstractions.js +4 -12
- package/admin/EnableTenant/abstractions.js.map +1 -1
- package/admin/EnableTenant/feature.js +15 -14
- package/admin/EnableTenant/feature.js.map +1 -1
- package/admin/EnableTenant/index.js +0 -2
- package/admin/EnableTenant/useEnableTenant.js +19 -18
- package/admin/EnableTenant/useEnableTenant.js.map +1 -1
- package/admin/Extension.js +32 -36
- package/admin/Extension.js.map +1 -1
- package/admin/IsRootTenant.js +14 -32
- package/admin/IsRootTenant.js.map +1 -1
- package/admin/SecurityPermission.js +11 -14
- package/admin/SecurityPermission.js.map +1 -1
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js +36 -37
- package/admin/TenantEntryList/DisableTenant/useDisableTenantDialog.js.map +1 -1
- package/admin/TenantEntryList/EnableTenant/EnableTenant.js +10 -14
- package/admin/TenantEntryList/EnableTenant/EnableTenant.js.map +1 -1
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js +34 -33
- package/admin/TenantEntryList/EnableTenant/useEnableTenant.js.map +1 -1
- package/admin/TenantEntryList/FolderNameCell.js +19 -24
- package/admin/TenantEntryList/FolderNameCell.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js +10 -14
- package/admin/TenantEntryList/InstallTenantButton/InstallTenant.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js +3 -2
- package/admin/TenantEntryList/InstallTenantButton/installTenant.gql.js.map +1 -1
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js +34 -38
- package/admin/TenantEntryList/InstallTenantButton/useInstallTenant.js.map +1 -1
- package/admin/TenantEntryList/ManageTenant.js +15 -16
- package/admin/TenantEntryList/ManageTenant.js.map +1 -1
- package/admin/TenantEntryList/TenantCell.js +15 -30
- package/admin/TenantEntryList/TenantCell.js.map +1 -1
- package/admin/TenantEntryList/TenantNameCell.js +35 -45
- package/admin/TenantEntryList/TenantNameCell.js.map +1 -1
- package/admin/TenantEntryList.js +43 -60
- package/admin/TenantEntryList.js.map +1 -1
- package/admin/TenantSelector.js +31 -35
- package/admin/TenantSelector.js.map +1 -1
- package/admin/domain/permissionsSchema.js +4 -3
- package/admin/domain/permissionsSchema.js.map +1 -1
- package/admin/features/permissions/abstractions.js +2 -1
- package/admin/features/permissions/abstractions.js.map +1 -1
- package/admin/features/permissions/feature.js +2 -1
- package/admin/features/permissions/feature.js.map +1 -1
- package/admin/types.js +0 -3
- package/api/Extension.js +20 -23
- package/api/Extension.js.map +1 -1
- package/api/domain/TenantId.js +5 -7
- package/api/domain/TenantId.js.map +1 -1
- package/api/domain/TenantModel.js +59 -37
- package/api/domain/TenantModel.js.map +1 -1
- package/api/domain/TenantModelExtension.js +2 -2
- package/api/domain/TenantModelExtension.js.map +1 -1
- package/api/domain/errors.js +49 -54
- package/api/domain/errors.js.map +1 -1
- package/api/features/AddCmsPermissions/AddCmsPermissions.js +40 -31
- package/api/features/AddCmsPermissions/AddCmsPermissions.js.map +1 -1
- package/api/features/AddCmsPermissions/feature.js +6 -5
- package/api/features/AddCmsPermissions/feature.js.map +1 -1
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js +67 -85
- package/api/features/CreateAndInstallTenant/CreateAndInstallTenantUseCase.js.map +1 -1
- package/api/features/CreateAndInstallTenant/abstractions.js +2 -6
- package/api/features/CreateAndInstallTenant/abstractions.js.map +1 -1
- package/api/features/CreateAndInstallTenant/feature.js +6 -6
- package/api/features/CreateAndInstallTenant/feature.js.map +1 -1
- package/api/features/CreateTenant/CreateTenantRepository.js +33 -38
- package/api/features/CreateTenant/CreateTenantRepository.js.map +1 -1
- package/api/features/CreateTenant/CreateTenantUseCase.js +29 -32
- package/api/features/CreateTenant/CreateTenantUseCase.js.map +1 -1
- package/api/features/CreateTenant/abstractions.js +3 -8
- package/api/features/CreateTenant/abstractions.js.map +1 -1
- package/api/features/CreateTenant/feature.js +7 -9
- package/api/features/CreateTenant/feature.js.map +1 -1
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js +17 -27
- package/api/features/DeleteTenantOnEntryDelete/DeleteTenantOnEntryDeleteHandler.js.map +1 -1
- package/api/features/DeleteTenantOnEntryDelete/feature.js +6 -6
- package/api/features/DeleteTenantOnEntryDelete/feature.js.map +1 -1
- package/api/features/DisableTenant/DisableTenantUseCase.js +41 -53
- package/api/features/DisableTenant/DisableTenantUseCase.js.map +1 -1
- package/api/features/DisableTenant/abstractions.js +2 -1
- package/api/features/DisableTenant/abstractions.js.map +1 -1
- package/api/features/DisableTenant/events.js +17 -12
- package/api/features/DisableTenant/events.js.map +1 -1
- package/api/features/DisableTenant/feature.js +6 -6
- package/api/features/DisableTenant/feature.js.map +1 -1
- package/api/features/EnableTenant/EnableTenantUseCase.js +43 -55
- package/api/features/EnableTenant/EnableTenantUseCase.js.map +1 -1
- package/api/features/EnableTenant/abstractions.js +2 -1
- package/api/features/EnableTenant/abstractions.js.map +1 -1
- package/api/features/EnableTenant/events.js +17 -12
- package/api/features/EnableTenant/events.js.map +1 -1
- package/api/features/EnableTenant/feature.js +6 -6
- package/api/features/EnableTenant/feature.js.map +1 -1
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js +21 -24
- package/api/features/GetCurrentTenant/GetCurrentTenantUseCase.js.map +1 -1
- package/api/features/GetCurrentTenant/abstractions.js +2 -7
- package/api/features/GetCurrentTenant/abstractions.js.map +1 -1
- package/api/features/GetCurrentTenant/feature.js +6 -6
- package/api/features/GetCurrentTenant/feature.js.map +1 -1
- package/api/features/GetTenantById/GetTenantByIdRepository.js +31 -36
- package/api/features/GetTenantById/GetTenantByIdRepository.js.map +1 -1
- package/api/features/GetTenantById/GetTenantByIdUseCase.js +15 -19
- package/api/features/GetTenantById/GetTenantByIdUseCase.js.map +1 -1
- package/api/features/GetTenantById/abstractions.js +3 -12
- package/api/features/GetTenantById/abstractions.js.map +1 -1
- package/api/features/GetTenantById/feature.js +7 -9
- package/api/features/GetTenantById/feature.js.map +1 -1
- package/api/features/UpdateTenant/UpdateTenantRepository.js +40 -47
- package/api/features/UpdateTenant/UpdateTenantRepository.js.map +1 -1
- package/api/features/UpdateTenant/UpdateTenantUseCase.js +15 -15
- package/api/features/UpdateTenant/UpdateTenantUseCase.js.map +1 -1
- package/api/features/UpdateTenant/abstractions.js +3 -12
- package/api/features/UpdateTenant/abstractions.js.map +1 -1
- package/api/features/UpdateTenant/feature.js +7 -9
- package/api/features/UpdateTenant/feature.js.map +1 -1
- package/api/graphql/CreateTenantSchema.js +53 -55
- package/api/graphql/CreateTenantSchema.js.map +1 -1
- package/api/graphql/DisableTenantSchema.js +20 -24
- package/api/graphql/DisableTenantSchema.js.map +1 -1
- package/api/graphql/EnableTenantSchema.js +20 -24
- package/api/graphql/EnableTenantSchema.js.map +1 -1
- package/api/graphql/GetCurrentTenantSchema.js +24 -28
- package/api/graphql/GetCurrentTenantSchema.js.map +1 -1
- package/api/graphql/InstallTenantSchema.js +26 -33
- package/api/graphql/InstallTenantSchema.js.map +1 -1
- package/exports/admin/tenancy.js +1 -5
- package/exports/api/tenant-manager.js +0 -2
- package/index.js +0 -2
- package/package.json +16 -16
- package/shared/Tenant.js +23 -22
- package/shared/Tenant.js.map +1 -1
- package/shared/constants.js +2 -1
- package/shared/constants.js.map +1 -1
- package/admin/DisableTenant/index.js.map +0 -1
- package/admin/EnableTenant/index.js.map +0 -1
- package/admin/types.js.map +0 -1
- package/exports/admin/tenancy.js.map +0 -1
- package/exports/api/tenant-manager.js.map +0 -1
- package/index.js.map +0 -1
package/api/Extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/api/domain/TenantId.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { EntryId } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
return EntryId.from(id).id;
|
|
2
|
+
class TenantId {
|
|
3
|
+
static from(id) {
|
|
4
|
+
if (id) return EntryId.from(id).id;
|
|
5
|
+
return EntryId.create().id;
|
|
7
6
|
}
|
|
8
|
-
return EntryId.create().id;
|
|
9
|
-
}
|
|
10
7
|
}
|
|
8
|
+
export { TenantId };
|
|
11
9
|
|
|
12
10
|
//# sourceMappingURL=TenantId.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -2,45 +2,67 @@ import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/ind
|
|
|
2
2
|
import { TenantModelExtension } from "./TenantModelExtension.js";
|
|
3
3
|
import { TENANT_MODEL_ID } from "../../shared/constants.js";
|
|
4
4
|
class TenantModelFactory {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
+
];
|
|
35
53
|
}
|
|
36
|
-
return [model];
|
|
37
|
-
}
|
|
38
54
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
const TenantModel = ModelFactory.createImplementation({
|
|
56
|
+
implementation: TenantModelFactory,
|
|
57
|
+
dependencies: [
|
|
58
|
+
[
|
|
59
|
+
TenantModelExtension,
|
|
60
|
+
{
|
|
61
|
+
multiple: true
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
]
|
|
44
65
|
});
|
|
66
|
+
export default TenantModel;
|
|
45
67
|
|
|
46
68
|
//# sourceMappingURL=TenantModel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
export
|
|
2
|
+
const TenantModelExtension = createAbstraction("TenantModelExtension");
|
|
3
|
+
export { TenantModelExtension };
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=TenantModelExtension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/api/domain/errors.js
CHANGED
|
@@ -1,63 +1,58 @@
|
|
|
1
1
|
import { BaseError } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
}
|
|
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
|
+
}
|
|
9
8
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
}
|
|
9
|
+
class TenantModelNotFoundError extends BaseError {
|
|
10
|
+
constructor(){
|
|
11
|
+
super({
|
|
12
|
+
message: "Tenant model was not found!"
|
|
13
|
+
}), this.code = "Tenant/ModelNotFound";
|
|
14
|
+
}
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
}
|
|
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
|
+
}
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
}
|
|
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
|
+
}
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
}
|
|
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
|
+
}
|
|
50
45
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
}
|
|
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
|
+
}
|
|
61
55
|
}
|
|
56
|
+
export { TenantCreationError, TenantInstallationError, TenantModelNotFoundError, TenantNotFoundError, TenantPersistenceError, TenantUpdateError };
|
|
62
57
|
|
|
63
58
|
//# sourceMappingURL=errors.js.map
|
package/api/domain/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -1,39 +1,48 @@
|
|
|
1
1
|
import { PermissionTransformer } from "@webiny/api-core/features/security/authorization/AuthorizationContext/abstractions.js";
|
|
2
2
|
import { TENANT_MODEL_ID } from "../../../shared/constants.js";
|
|
3
3
|
class AddCmsPermissions {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
+
];
|
|
7
40
|
}
|
|
8
|
-
return [permission, {
|
|
9
|
-
name: "cms.endpoint.manage",
|
|
10
|
-
_src: "tenant-manager"
|
|
11
|
-
}, {
|
|
12
|
-
name: "cms.contentModel",
|
|
13
|
-
own: false,
|
|
14
|
-
rwd: "r",
|
|
15
|
-
pw: "",
|
|
16
|
-
models: [TENANT_MODEL_ID],
|
|
17
|
-
_src: "tenant-manager"
|
|
18
|
-
}, {
|
|
19
|
-
name: "cms.contentModelGroup",
|
|
20
|
-
own: false,
|
|
21
|
-
rwd: "r",
|
|
22
|
-
pw: "",
|
|
23
|
-
groups: ["hidden"],
|
|
24
|
-
_src: "tenant-manager"
|
|
25
|
-
}, {
|
|
26
|
-
name: "cms.contentEntry",
|
|
27
|
-
own: false,
|
|
28
|
-
rwd: "rwd",
|
|
29
|
-
pw: "",
|
|
30
|
-
_src: "tenant-manager"
|
|
31
|
-
}];
|
|
32
|
-
}
|
|
33
41
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
const AddCmsPermissions_AddCmsPermissions = PermissionTransformer.createImplementation({
|
|
43
|
+
implementation: AddCmsPermissions,
|
|
44
|
+
dependencies: []
|
|
37
45
|
});
|
|
46
|
+
export default AddCmsPermissions_AddCmsPermissions;
|
|
38
47
|
|
|
39
48
|
//# sourceMappingURL=AddCmsPermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { createFeature } from "@webiny/feature/api";
|
|
2
2
|
import AddCmsPermissions from "./AddCmsPermissions.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
const AddCmsPermissionsFeature = createFeature({
|
|
4
|
+
name: "AddCmsPermissions",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(AddCmsPermissions);
|
|
7
|
+
}
|
|
8
8
|
});
|
|
9
|
+
export { AddCmsPermissionsFeature };
|
|
9
10
|
|
|
10
11
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -3,97 +3,79 @@ import { EntryId } from "@webiny/api-headless-cms/domain/contentEntry/EntryId.js
|
|
|
3
3
|
import { TenantCreationError, TenantInstallationError, TenantUpdateError } from "../../domain/errors.js";
|
|
4
4
|
import { GetTenantByIdUseCase } from "../GetTenantById/abstractions.js";
|
|
5
5
|
import { UpdateTenantUseCase } from "../UpdateTenant/abstractions.js";
|
|
6
|
-
import { CreateAndInstallTenantUseCase
|
|
7
|
-
import * as Tenancy from "@webiny/api-core/exports/api/tenancy.js";
|
|
6
|
+
import { CreateAndInstallTenantUseCase } from "./abstractions.js";
|
|
8
7
|
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/errors.js";
|
|
9
8
|
import { IdentityContext } from "@webiny/api-core/exports/api/security.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this.coreUpdateTenant = coreUpdateTenant;
|
|
22
|
-
this.coreDeleteTenant = coreDeleteTenant;
|
|
23
|
-
this.coreInstallTenant = coreInstallTenant;
|
|
24
|
-
}
|
|
25
|
-
async execute(tenantId) {
|
|
26
|
-
// Authorization checks
|
|
27
|
-
if (!this.identityContext.getPermission("tm.tenant")) {
|
|
28
|
-
return Result.fail(new NotAuthorizedError({
|
|
29
|
-
message: "Not authorized to create tenants!"
|
|
30
|
-
}));
|
|
9
|
+
import * as __rspack_external__webiny_api_core_exports_api_tenancy_js_14a46aed 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;
|
|
31
20
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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);
|
|
38
56
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
name: tenant.values.name,
|
|
47
|
-
description: tenant.values.description,
|
|
48
|
-
status: "enabled"
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
// Mark tenant installed, and exit early.
|
|
52
|
-
return this.markTenantInstalled(tenant);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Create tenant
|
|
56
|
-
const createTenantResult = await this.coreCreateTenant.execute({
|
|
57
|
-
id: entryId.id,
|
|
58
|
-
name: tenant.values.name,
|
|
59
|
-
parent: "root",
|
|
60
|
-
description: tenant.values.name,
|
|
61
|
-
tags: []
|
|
62
|
-
});
|
|
63
|
-
if (createTenantResult.isFail()) {
|
|
64
|
-
return Result.fail(new TenantCreationError(createTenantResult.error));
|
|
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);
|
|
65
64
|
}
|
|
66
|
-
const createdTenant = createTenantResult.value;
|
|
67
|
-
|
|
68
|
-
// Install tenant
|
|
69
|
-
const installResult = await this.coreInstallTenant.execute({
|
|
70
|
-
tenant: createdTenant,
|
|
71
|
-
installationInput: []
|
|
72
|
-
});
|
|
73
|
-
if (installResult.isFail()) {
|
|
74
|
-
// Delete tenant if installation failed.
|
|
75
|
-
await this.coreDeleteTenant.execute(createdTenant.id);
|
|
76
|
-
return Result.fail(new TenantInstallationError(installResult.error));
|
|
77
|
-
}
|
|
78
|
-
return this.markTenantInstalled(tenant);
|
|
79
|
-
}
|
|
80
|
-
async markTenantInstalled(tenant) {
|
|
81
|
-
// Update tenant entry to mark as installed
|
|
82
|
-
const updateResult = await this.updateTenantUseCase.execute(tenant.id, {
|
|
83
|
-
status: "enabled",
|
|
84
|
-
isInstalled: true
|
|
85
|
-
});
|
|
86
|
-
if (updateResult.isFail()) {
|
|
87
|
-
return Result.fail(new TenantUpdateError(updateResult.error));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Return updated tenant
|
|
91
|
-
return Result.ok(updateResult.value);
|
|
92
|
-
}
|
|
93
65
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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_14a46aed.GetTenantByIdUseCase,
|
|
73
|
+
__rspack_external__webiny_api_core_exports_api_tenancy_js_14a46aed.CreateTenantUseCase,
|
|
74
|
+
__rspack_external__webiny_api_core_exports_api_tenancy_js_14a46aed.UpdateTenantUseCase,
|
|
75
|
+
__rspack_external__webiny_api_core_exports_api_tenancy_js_14a46aed.DeleteTenantUseCase,
|
|
76
|
+
__rspack_external__webiny_api_core_exports_api_tenancy_js_14a46aed.InstallTenantUseCase
|
|
77
|
+
]
|
|
97
78
|
});
|
|
79
|
+
export default CreateAndInstallTenant_CreateAndInstallTenantUseCase;
|
|
98
80
|
|
|
99
81
|
//# sourceMappingURL=CreateAndInstallTenantUseCase.js.map
|