@betterportal/config-manager 11.0.1 → 11.0.3
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/lib/.bsb/clients/service-betterportal-config-manager.d.ts +1 -1
- package/lib/.bsb/clients/service-betterportal-config-manager.js +1 -1
- package/lib/bp-contracts/org.betterportal.config-manager.json +1 -1
- package/lib/plugins/service-betterportal-config-manager/accessControl.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/accessControl.js +39 -6
- package/lib/plugins/service-betterportal-config-manager/accessControl.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts +25 -2
- package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/adminApi.js +36 -21
- package/lib/plugins/service-betterportal-config-manager/adminApi.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/appQueries.d.ts +9 -3
- package/lib/plugins/service-betterportal-config-manager/appQueries.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bootstrapEndpoint.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bootstrapEndpoint.js +5 -3
- package/lib/plugins/service-betterportal-config-manager/bootstrapEndpoint.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bootstrapWizardHtml.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bootstrapWizardHtml.js +7 -2
- package/lib/plugins/service-betterportal-config-manager/bootstrapWizardHtml.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/auth/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/auth/_renderer.bootstrap5/GET.js +5 -2
- package/lib/plugins/service-betterportal-config-manager/bp-routes/auth/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/services/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/services/_renderer.bootstrap5/GET.js +11 -4
- package/lib/plugins/service-betterportal-config-manager/bp-routes/services/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewApi.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewApi.js +4 -2
- package/lib/plugins/service-betterportal-config-manager/previewApi.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewEnvironments.d.ts +2 -2
- package/lib/plugins/service-betterportal-config-manager/previewEnvironments.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewEnvironments.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/publicJsonBody.d.ts +4 -0
- package/lib/plugins/service-betterportal-config-manager/publicJsonBody.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-config-manager/publicJsonBody.js +39 -0
- package/lib/plugins/service-betterportal-config-manager/publicJsonBody.js.map +1 -0
- package/lib/plugins/service-betterportal-config-manager/setupTokens.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/setupTokens.js +35 -8
- package/lib/plugins/service-betterportal-config-manager/setupTokens.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/storage/appData.d.ts +3 -1
- package/lib/plugins/service-betterportal-config-manager/storage/appData.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/syncApi.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/syncApi.js +5 -2
- package/lib/plugins/service-betterportal-config-manager/syncApi.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/webhooks.d.ts +7 -1
- package/lib/plugins/service-betterportal-config-manager/webhooks.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/webhooks.js +100 -10
- package/lib/plugins/service-betterportal-config-manager/webhooks.js.map +1 -1
- package/lib/schemas/service-betterportal-config-manager.json +1 -1
- package/lib/schemas/service-betterportal-config-manager.plugin.json +1 -1
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated BSB virtual client for service-betterportal-config-manager
|
|
3
3
|
* DO NOT EDIT - Regenerated on every build
|
|
4
|
-
* @version 11.0.
|
|
4
|
+
* @version 11.0.3
|
|
5
5
|
*/
|
|
6
6
|
import { ServiceClient, BSBService } from "@bsb/base";
|
|
7
7
|
import type { Observable, BSBServiceClientDefinition, EventInputType } from "@bsb/base";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated BSB virtual client for service-betterportal-config-manager
|
|
3
3
|
* DO NOT EDIT - Regenerated on every build
|
|
4
|
-
* @version 11.0.
|
|
4
|
+
* @version 11.0.3
|
|
5
5
|
*/
|
|
6
6
|
import { ServiceClient, importPortableSchema, createFireAndForgetEvent, createBroadcastEvent, createEventSchemas } from "@bsb/base";
|
|
7
7
|
const _webhookDeliveryAvailableSchema = importPortableSchema(JSON.parse("{\"anyvaliVersion\":\"1.0\",\"schemaVersion\":\"1.1\",\"root\":{\"kind\":\"object\",\"properties\":{},\"required\":[],\"unknownKeys\":\"strip\"},\"definitions\":{},\"extensions\":{}}"));
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"pluginId": "org.betterportal.config-manager",
|
|
5
5
|
"title": "BetterPortal Config Manager",
|
|
6
6
|
"description": "Admin-facing BetterPortal service for discovering and managing service config surfaces.",
|
|
7
|
-
"version": "11.0.
|
|
7
|
+
"version": "11.0.3",
|
|
8
8
|
"category": "service",
|
|
9
9
|
"deploymentModes": [
|
|
10
10
|
"self-hosted"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/accessControl.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"accessControl.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/accessControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAwJzD,wFAAwF;AACxF,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAiEtI"}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
|
-
import { createStaticJwksVerifier, eventHeaders, jsonResponse, resolveEmbeddedRequestContext } from "@betterportal/framework";
|
|
1
|
+
import { createStaticJwksVerifier, checkBoundedRequestBody, eventHeaders, jsonResponse, readBoundedJsonBody, resolveEmbeddedRequestContext } from "@betterportal/framework";
|
|
2
2
|
import { verifyBootstrapAdminToken } from "./bootstrapAccess.js";
|
|
3
3
|
const ADMIN = "/.well-known/bp/admin";
|
|
4
4
|
const MANAGE = "/.well-known/bp/manage";
|
|
5
5
|
const CONFIG_MANAGER_ID = "org.betterportal.config-manager";
|
|
6
|
+
const MAX_RAW_BODY_BYTES = 1024 * 1024;
|
|
7
|
+
const MAX_RAW_MULTIPART_BYTES = 25 * 1024 * 1024 + 128 * 1024;
|
|
6
8
|
function bearer(event) {
|
|
7
9
|
return /^Bearer\s+(\S+)$/i.exec(event.req.headers.get("authorization") ?? "")?.[1];
|
|
8
10
|
}
|
|
11
|
+
async function guardRawBody(event) {
|
|
12
|
+
if (!event.req.body)
|
|
13
|
+
return undefined;
|
|
14
|
+
const multipart = (event.req.headers.get("content-type") ?? "").toLowerCase().startsWith("multipart/form-data");
|
|
15
|
+
const result = await checkBoundedRequestBody(event.req.clone(), multipart ? MAX_RAW_MULTIPART_BYTES : MAX_RAW_BODY_BYTES);
|
|
16
|
+
if (result)
|
|
17
|
+
void event.req.body.cancel().catch(() => undefined);
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
9
20
|
function inTree(path, root) {
|
|
10
21
|
return path === root || path.startsWith(`${root}/`);
|
|
11
22
|
}
|
|
@@ -18,7 +29,12 @@ function bootstrapRoute(path, method, appId) {
|
|
|
18
29
|
|| path === `${ADMIN}/apps/${encodeURIComponent(appId)}/auth/roles`);
|
|
19
30
|
}
|
|
20
31
|
async function allowedBootstrapRequest(config, app, path, event) {
|
|
21
|
-
const
|
|
32
|
+
const parsed = await readBoundedJsonBody(event.req.clone(), 128 * 1024);
|
|
33
|
+
if (parsed instanceof Response) {
|
|
34
|
+
void event.req.body?.cancel().catch(() => undefined);
|
|
35
|
+
return parsed;
|
|
36
|
+
}
|
|
37
|
+
const body = parsed;
|
|
22
38
|
if (!body || typeof body !== "object" || Array.isArray(body))
|
|
23
39
|
return false;
|
|
24
40
|
if (path !== `${ADMIN}/services/begin-install`)
|
|
@@ -91,7 +107,12 @@ async function permissionForAdmin(path, method, event, config) {
|
|
|
91
107
|
return { viewId: "services.index", action: suffix.endsWith("/purge") ? "delete" : suffix.endsWith("/migrate-to-shared") ? "update" : action };
|
|
92
108
|
}
|
|
93
109
|
if (suffix === "services/begin-install" && method === "POST") {
|
|
94
|
-
const
|
|
110
|
+
const parsed = await readBoundedJsonBody(event.req.clone(), 128 * 1024);
|
|
111
|
+
if (parsed instanceof Response) {
|
|
112
|
+
void event.req.body?.cancel().catch(() => undefined);
|
|
113
|
+
return parsed;
|
|
114
|
+
}
|
|
115
|
+
const body = parsed;
|
|
95
116
|
const existingInstance = typeof body?.instanceId === "string" && (config.platformServices.some(service => service.id === body.instanceId)
|
|
96
117
|
|| config.tenants.some(tenant => tenant.services.some(service => service.id === body.instanceId)));
|
|
97
118
|
const registeredShared = typeof body?.sharedServiceId === "string" && config.sharedServiceCatalog.some(service => service.id === body.sharedServiceId && !!service.apiKeyHash);
|
|
@@ -107,7 +128,12 @@ async function permissionForAdmin(path, method, event, config) {
|
|
|
107
128
|
if (suffix === "wizard/cleanup-provisional-service" && method === "POST")
|
|
108
129
|
return { viewId: "services.index", action: "delete" };
|
|
109
130
|
if (suffix === "config-ticket" && method === "POST") {
|
|
110
|
-
const
|
|
131
|
+
const parsed = await readBoundedJsonBody(event.req.clone(), 128 * 1024);
|
|
132
|
+
if (parsed instanceof Response) {
|
|
133
|
+
void event.req.body?.cancel().catch(() => undefined);
|
|
134
|
+
return parsed;
|
|
135
|
+
}
|
|
136
|
+
const body = parsed;
|
|
111
137
|
return { viewId: "services.index", action: Array.isArray(body?.actions) && body.actions.includes("config.write") ? "update" : "read" };
|
|
112
138
|
}
|
|
113
139
|
return undefined;
|
|
@@ -157,8 +183,10 @@ export function registerRawManagementAccessControl(app, store, cpState) {
|
|
|
157
183
|
try {
|
|
158
184
|
const scope = await verifyBootstrapAdminToken(cpState, token);
|
|
159
185
|
if (scope.tenantId === target.tenantId && scope.appId === target.id) {
|
|
160
|
-
|
|
161
|
-
|
|
186
|
+
const allowed = await allowedBootstrapRequest(config, target, path, event);
|
|
187
|
+
if (allowed instanceof Response)
|
|
188
|
+
return allowed;
|
|
189
|
+
return allowed ? undefined : jsonResponse({ error: "Bootstrap operation is outside its setup scope" }, 403);
|
|
162
190
|
}
|
|
163
191
|
}
|
|
164
192
|
catch { /* A normal management user token may still authorize this request. */ }
|
|
@@ -181,12 +209,17 @@ export function registerRawManagementAccessControl(app, store, cpState) {
|
|
|
181
209
|
if (claims.tenantId !== target.tenantId || claims.appId !== target.id || claims.tokenType !== "access") {
|
|
182
210
|
return jsonResponse({ error: "Management token scope mismatch" }, 401);
|
|
183
211
|
}
|
|
212
|
+
const bodyError = await guardRawBody(event);
|
|
213
|
+
if (bodyError)
|
|
214
|
+
return bodyError;
|
|
184
215
|
const root = target.id === config.configManagement.managementAppId
|
|
185
216
|
&& target.tenantId === config.configManagement.adminTenantId && claims.roles.includes("*");
|
|
186
217
|
if (admin) {
|
|
187
218
|
if (root)
|
|
188
219
|
return;
|
|
189
220
|
const policy = await permissionForAdmin(path, method, event, config);
|
|
221
|
+
if (policy instanceof Response)
|
|
222
|
+
return policy;
|
|
190
223
|
return policy && hasPermission(config, target, claims.roles, policy.viewId, policy.action)
|
|
191
224
|
? undefined : jsonResponse({ error: "Platform management permission required" }, 403);
|
|
192
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accessControl.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/accessControl.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,6BAA6B,EAM9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,KAAK,GAAG,uBAAuB,CAAC;AACtC,MAAM,MAAM,GAAG,wBAAwB,CAAC;AACxC,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAG5D,SAAS,MAAM,CAAC,KAAwB;IACtC,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY;IACxC,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY,EAAE,MAAc;IAC5D,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,yBAAyB,CAAC;WAClE,CAAC,MAAM,KAAK,KAAK,IAAI,6DAA6D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa;IACjE,OAAO,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,GAAG,KAAK,yBAAyB;WAClE,IAAI,KAAK,GAAG,KAAK,SAAS,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,MAA0B,EAAE,GAAoB,EAAE,IAAY,EAAE,KAAwB;IAC7H,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAmC,CAAC;IAChG,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,IAAI,IAAI,KAAK,GAAG,KAAK,yBAAyB;QAAE,OAAO,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC;IAC3E,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxI,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IAC7C,IAAI,eAAe,KAAK,+BAA+B,IAAI,eAAe,KAAK,mCAAmC;QAAE,OAAO,KAAK,CAAC;IACjI,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC;IAChG,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;WACnG,SAAS,CAAC,eAAe,KAAK,eAAe,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;WACrE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;WACnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,UAAU,CAAC,MAA0B,EAAE,KAAwB;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,KAAK;QACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,CAAC;QACvD,CAAC,CAAC,6BAA6B,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IACpE,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7G,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,MAAc;IACvD,IAAI,IAAI,KAAK,GAAG,MAAM,UAAU;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,gBAAgB;QAClF,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc;YACtC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,iBAAiB;gBAC5C,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc;oBACrC,CAAC,CAAC,SAAS,CAAC;IACpB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,MAAM,MAAM,GAAW,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ;QAC/E,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,KAAK,mBAAmB,CAAC,CAAC;YACzH,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAAc,EAAE,KAAwB,EAAE,MAA0B;IAClH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAuB,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ;QACzF,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;IACzG,IAAI,MAAM,KAAK,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACpG,MAAM,UAAU,GAAG,qJAAqJ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3L,IAAI,MAAM,KAAK,MAAM,IAAI,UAAU;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE9J,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,kBAAkB;QAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5G,MAAM,cAAc,GAAG,0EAA0E,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,IAAI,MAAM,KAAK,MAAM,IAAI,cAAc;QAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE/K,MAAM,WAAW,GAAG,wHAAwH,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/J,IAAI,WAAW;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc;gBACjF,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY;oBACrC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;wBAC9C,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc;YACxE,MAAM,EAAE,WAAW,KAAK,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAE1E,IAAI,MAAM,KAAK,mBAAmB,IAAI,6DAA6D,CAAC,IAAI,CAAC,MAAM,CAAC;WAC3G,4GAA4G,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/H,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChJ,CAAC;IACD,IAAI,MAAM,KAAK,wBAAwB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAsF,CAAC;QACnJ,MAAM,gBAAgB,GAAG,OAAO,IAAI,EAAE,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;eACpI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,gBAAgB,GAAG,OAAO,IAAI,EAAE,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/K,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,KAAK,IAAI,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxI,CAAC;IACD,IAAI,MAAM,KAAK,gCAAgC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC5H,IAAI,CAAC,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI,MAAM,KAAK,KAAK;WACxE,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1G,IAAI,MAAM,KAAK,iBAAiB,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC7G,IAAI,MAAM,KAAK,oCAAoC,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAChI,IAAI,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAiC,CAAC;QAC9F,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzI,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B,EAAE,GAAoB,EAAE,OAAiB,EAAE,MAAc,EAAE,MAAc;IACxH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,SAAS,KAAK,iBAAiB;YAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACzD,IAAI,UAAU,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,SAAS;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,UAAU,CAAC,eAAe,CAAC,CAAC;QACtG,IAAI,MAAM,EAAE,SAAS,KAAK,iBAAiB;YAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;WAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClI,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kCAAkC,CAAC,GAAsB,EAAE,KAA0B,EAAE,OAAyB;IAC9H,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO;QAC9B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC;YAAE,OAAO;QAE5D,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC,eAAe;mBACnF,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;YAClE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,GAAG,CAAC,CAAC;QAE/E,IAAI,KAAK,IAAI,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC9D,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;oBACpE,OAAO,MAAM,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;wBAC/D,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,gDAAgD,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,sEAAsE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,EAAE,GAAG,CAAC,CAAC;QACjH,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,wBAAwB,CAAC;gBACtC,IAAI,EAAE,IAAI,CAAC,UAAU;gBACrB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,iBAAiB,EAAE,QAAQ;aAC5B,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvG,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,gBAAgB,CAAC,eAAe;eAC7D,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,gBAAgB,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7F,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,IAAI;gBAAE,OAAO;YACjB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACxF,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,IAAI,KAAK,GAAG,MAAM,UAAU;YAAE,OAAO;QACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1F,OAAO,YAAY,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"accessControl.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/accessControl.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,11 +111,13 @@ declare function automationServiceCatalog(config: AppEditorData, appDef: BetterP
|
|
|
111
111
|
}[];
|
|
112
112
|
role: string | undefined;
|
|
113
113
|
chrome: {
|
|
114
|
-
[x: string]: string | number | boolean;
|
|
114
|
+
[x: string]: string | number | boolean | string[];
|
|
115
115
|
hideMenu?: boolean | undefined;
|
|
116
116
|
hideHeader?: boolean | undefined;
|
|
117
117
|
hideFooter?: boolean | undefined;
|
|
118
118
|
fullScreen?: boolean | undefined;
|
|
119
|
+
title?: string | undefined;
|
|
120
|
+
parents?: string[] | undefined;
|
|
119
121
|
} | undefined;
|
|
120
122
|
dependencies: {
|
|
121
123
|
operationId: string;
|
|
@@ -248,11 +250,13 @@ declare function automationServiceCatalog(config: AppEditorData, appDef: BetterP
|
|
|
248
250
|
}[];
|
|
249
251
|
role: string | undefined;
|
|
250
252
|
chrome: {
|
|
251
|
-
[x: string]: string | number | boolean;
|
|
253
|
+
[x: string]: string | number | boolean | string[];
|
|
252
254
|
hideMenu?: boolean | undefined;
|
|
253
255
|
hideHeader?: boolean | undefined;
|
|
254
256
|
hideFooter?: boolean | undefined;
|
|
255
257
|
fullScreen?: boolean | undefined;
|
|
258
|
+
title?: string | undefined;
|
|
259
|
+
parents?: string[] | undefined;
|
|
256
260
|
} | undefined;
|
|
257
261
|
dependencies: {
|
|
258
262
|
operationId: string;
|
|
@@ -307,6 +311,25 @@ export declare function purgeServiceReferences(config: BetterPortalConfig, tenan
|
|
|
307
311
|
webhooksRemoved: number;
|
|
308
312
|
};
|
|
309
313
|
export declare function registerAdminApiRoutes(app: BetterPortalH3App, store: PlatformConfigStore, cpState: CpBootstrapState, database?: AppDatabase): void;
|
|
314
|
+
export declare function renderWizardStep2(d: {
|
|
315
|
+
tenantId: string;
|
|
316
|
+
hostname: string;
|
|
317
|
+
pluginId: string;
|
|
318
|
+
version: string;
|
|
319
|
+
viewCount: number;
|
|
320
|
+
title: string;
|
|
321
|
+
schema: string;
|
|
322
|
+
adminApiBase: string;
|
|
323
|
+
}): string;
|
|
324
|
+
export declare function renderWizardStep3(d: {
|
|
325
|
+
apiKey: string;
|
|
326
|
+
deploymentMode: string;
|
|
327
|
+
title: string;
|
|
328
|
+
tenantId?: string;
|
|
329
|
+
serviceInstanceId?: string;
|
|
330
|
+
serviceUrl?: string;
|
|
331
|
+
adminApiBase?: string;
|
|
332
|
+
}): string;
|
|
310
333
|
export declare function renderConfigClientShell(d: {
|
|
311
334
|
hostname: string;
|
|
312
335
|
tenantId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adminApi.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/adminApi.ts"],"names":[],"mappings":"AACA,OAAO,EAA2C,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhH,OAAO,KAAK,EACV,iBAAiB,EAEjB,mBAAmB,EACnB,SAAS,EACV,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adminApi.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/adminApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { eventObservability } from "@betterportal/framework";
|
|
|
2
2
|
import { editAppRows, readApp, readRequestConfig } from "./appQueries.js";
|
|
3
3
|
import { isMenuRouteExcluded } from "./routeMounts.js";
|
|
4
4
|
import * as av from "anyvali";
|
|
5
|
-
import { AppAuthRoleSchema, eventHeaders, htmlResponse, jsonResponse, resolveEmbeddedRequestContext, signServiceConfigTicket, uuidv7, BetterPortalMenuItemSchema, BetterPortalThemeConfigSchema } from "@betterportal/framework";
|
|
5
|
+
import { AppAuthRoleSchema, eventHeaders, htmlResponse, jsonResponse, readBoundedJsonBody, resolveEmbeddedRequestContext, signServiceConfigTicket, uuidv7, BetterPortalMenuItemSchema, BetterPortalThemeConfigSchema } from "@betterportal/framework";
|
|
6
6
|
import { generateApiKey, hashApiKey } from "./storage/index.js";
|
|
7
7
|
import { getManifestCache } from "./syncApi.js";
|
|
8
8
|
import { apiRoutePath, appRoutePatternKey, isApiRoute, pageRoutePath } from "./routeMounts.js";
|
|
@@ -44,6 +44,9 @@ async function readFormBodyWithArrays(event) {
|
|
|
44
44
|
function escapeHtml(s) {
|
|
45
45
|
return s.replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }[c]));
|
|
46
46
|
}
|
|
47
|
+
function inlineScriptJson(value) {
|
|
48
|
+
return JSON.stringify(value ?? null).replace(/</g, "\\u003c");
|
|
49
|
+
}
|
|
47
50
|
async function readJsonBody(event) {
|
|
48
51
|
const parsed = await event.req.json().catch(() => null);
|
|
49
52
|
return (parsed && typeof parsed === "object" && !Array.isArray(parsed))
|
|
@@ -1777,13 +1780,16 @@ export function registerAdminApiRoutes(app, store, cpState, database) {
|
|
|
1777
1780
|
const appId = getParam(event, "appId");
|
|
1778
1781
|
if (!appId)
|
|
1779
1782
|
return jsonResponse({ error: "appId required" }, 400);
|
|
1780
|
-
const body = await readJsonBody(event);
|
|
1781
|
-
const roles = Array.isArray(body.roles) ? body.roles : undefined;
|
|
1782
|
-
if (!roles)
|
|
1783
|
-
return jsonResponse({ error: "roles array required" }, 400);
|
|
1784
1783
|
const identity = await readServiceIdentity(event);
|
|
1785
1784
|
if (identity instanceof Response)
|
|
1786
1785
|
return identity;
|
|
1786
|
+
const parsedBody = await readBoundedJsonBody(event.req, 1024 * 1024);
|
|
1787
|
+
if (parsedBody instanceof Response)
|
|
1788
|
+
return parsedBody;
|
|
1789
|
+
const body = parsedBody && typeof parsedBody === "object" && !Array.isArray(parsedBody) ? parsedBody : {};
|
|
1790
|
+
const roles = Array.isArray(body.roles) ? body.roles : undefined;
|
|
1791
|
+
if (!roles)
|
|
1792
|
+
return jsonResponse({ error: "roles array required" }, 400);
|
|
1787
1793
|
return editApp(store, appId, async (config) => {
|
|
1788
1794
|
const appDef = config.apps.find(app => app.id === appId);
|
|
1789
1795
|
if (!appDef)
|
|
@@ -1802,13 +1808,16 @@ export function registerAdminApiRoutes(app, store, cpState, database) {
|
|
|
1802
1808
|
}, database, event);
|
|
1803
1809
|
});
|
|
1804
1810
|
app.put(`${API_BASE}/services/self-mutation`, async (event) => {
|
|
1805
|
-
const parsed = SelfMutationRequestSchema.safeParse(await readJsonBody(event));
|
|
1806
|
-
if (!parsed.success)
|
|
1807
|
-
return jsonResponse({ error: "Invalid self-mutation request", issues: parsed.issues }, 400);
|
|
1808
|
-
const { tenantId, appId, type, mutation } = parsed.data;
|
|
1809
1811
|
const identity = await readServiceIdentity(event);
|
|
1810
1812
|
if (identity instanceof Response)
|
|
1811
1813
|
return identity;
|
|
1814
|
+
const body = await readBoundedJsonBody(event.req, 1024 * 1024);
|
|
1815
|
+
if (body instanceof Response)
|
|
1816
|
+
return body;
|
|
1817
|
+
const parsed = SelfMutationRequestSchema.safeParse(body);
|
|
1818
|
+
if (!parsed.success)
|
|
1819
|
+
return jsonResponse({ error: "Invalid self-mutation request", issues: parsed.issues }, 400);
|
|
1820
|
+
const { tenantId, appId, type, mutation } = parsed.data;
|
|
1812
1821
|
if (type === "theme") {
|
|
1813
1822
|
const { config, appDef } = await getAppOr404(appId);
|
|
1814
1823
|
if (!appDef || appDef.tenantId !== tenantId)
|
|
@@ -2613,7 +2622,7 @@ function renderWizardStep1(config, error, prefill, adminApiBase = API_BASE) {
|
|
|
2613
2622
|
</script>
|
|
2614
2623
|
</div>`;
|
|
2615
2624
|
}
|
|
2616
|
-
function renderWizardStep2(d) {
|
|
2625
|
+
export function renderWizardStep2(d) {
|
|
2617
2626
|
return `<div id="bp-wizard-step">
|
|
2618
2627
|
<div class="mb-3 text-secondary small">Step 2 of 3</div>
|
|
2619
2628
|
<div class="alert alert-success mb-3">
|
|
@@ -2668,7 +2677,7 @@ function renderWizardStep2(d) {
|
|
|
2668
2677
|
back.addEventListener("click", async (event) => {
|
|
2669
2678
|
event.preventDefault();
|
|
2670
2679
|
event.stopImmediatePropagation();
|
|
2671
|
-
const url = ${
|
|
2680
|
+
const url = ${inlineScriptJson(d.adminApiBase)} + "/wizard/step1?tenantId=" + encodeURIComponent(${inlineScriptJson(d.tenantId)}) + "&hostname=" + encodeURIComponent(${inlineScriptJson(d.hostname)});
|
|
2672
2681
|
const response = await fetch(url, { headers: { Accept: "text/html" } });
|
|
2673
2682
|
const html = await response.text();
|
|
2674
2683
|
if (step) step.outerHTML = html;
|
|
@@ -2678,7 +2687,7 @@ function renderWizardStep2(d) {
|
|
|
2678
2687
|
</script>
|
|
2679
2688
|
</div>`;
|
|
2680
2689
|
}
|
|
2681
|
-
function renderWizardStep3(d) {
|
|
2690
|
+
export function renderWizardStep3(d) {
|
|
2682
2691
|
if (d.tenantId && d.serviceInstanceId && d.serviceUrl) {
|
|
2683
2692
|
return `<div id="bp-wizard-step">
|
|
2684
2693
|
<div class="mb-3 text-secondary small">Step 3 of 3</div>
|
|
@@ -2694,7 +2703,13 @@ function renderWizardStep3(d) {
|
|
|
2694
2703
|
const setStatus = (kind, heading, message) => {
|
|
2695
2704
|
if (!status) return;
|
|
2696
2705
|
status.className = "alert alert-" + kind;
|
|
2697
|
-
|
|
2706
|
+
const title = document.createElement("h6");
|
|
2707
|
+
title.className = "alert-heading";
|
|
2708
|
+
title.textContent = heading;
|
|
2709
|
+
const detail = document.createElement("p");
|
|
2710
|
+
detail.className = "mb-0 small";
|
|
2711
|
+
detail.textContent = message;
|
|
2712
|
+
status.replaceChildren(title, detail);
|
|
2698
2713
|
};
|
|
2699
2714
|
const postJson = async (url, body) => {
|
|
2700
2715
|
const response = await fetch(url, {
|
|
@@ -2708,12 +2723,12 @@ function renderWizardStep3(d) {
|
|
|
2708
2723
|
};
|
|
2709
2724
|
(async () => {
|
|
2710
2725
|
try {
|
|
2711
|
-
const install = await postJson(${
|
|
2712
|
-
serviceUrl: ${
|
|
2713
|
-
tenantId: ${
|
|
2714
|
-
instanceId: ${
|
|
2726
|
+
const install = await postJson(${inlineScriptJson((d.adminApiBase ?? API_BASE).replace(/\/+$/, ""))} + "/services/begin-install", {
|
|
2727
|
+
serviceUrl: ${inlineScriptJson(d.serviceUrl)},
|
|
2728
|
+
tenantId: ${inlineScriptJson(d.tenantId)},
|
|
2729
|
+
instanceId: ${inlineScriptJson(d.serviceInstanceId)}
|
|
2715
2730
|
});
|
|
2716
|
-
await postJson(${
|
|
2731
|
+
await postJson(${inlineScriptJson(d.serviceUrl)} + "/.well-known/bp/install", {
|
|
2717
2732
|
setupToken: install.setupToken,
|
|
2718
2733
|
cpUrl: install.cpUrl
|
|
2719
2734
|
});
|
|
@@ -2721,9 +2736,9 @@ function renderWizardStep3(d) {
|
|
|
2721
2736
|
if (done) done.disabled = false;
|
|
2722
2737
|
} catch (error) {
|
|
2723
2738
|
try {
|
|
2724
|
-
await postJson(${
|
|
2725
|
-
tenantId: ${
|
|
2726
|
-
serviceInstanceId: ${
|
|
2739
|
+
await postJson(${inlineScriptJson((d.adminApiBase ?? API_BASE).replace(/\/+$/, ""))} + "/wizard/cleanup-provisional-service", {
|
|
2740
|
+
tenantId: ${inlineScriptJson(d.tenantId)},
|
|
2741
|
+
serviceInstanceId: ${inlineScriptJson(d.serviceInstanceId)}
|
|
2727
2742
|
});
|
|
2728
2743
|
} catch { /* cleanup best effort */ }
|
|
2729
2744
|
setStatus("danger", "Install Failed", error instanceof Error ? error.message : String(error));
|