@betterportal/config-manager 10.1.67 → 10.1.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/lib/.bsb/clients/service-betterportal-config-manager.d.ts +1 -1
  2. package/lib/.bsb/clients/service-betterportal-config-manager.js +1 -1
  3. package/lib/bp-contracts/org.betterportal.config-manager.json +1 -1
  4. package/lib/plugins/service-betterportal-config-manager/bp-routes/menu/_renderer.bootstrap5/GET.d.ts.map +1 -1
  5. package/lib/plugins/service-betterportal-config-manager/bp-routes/menu/_renderer.bootstrap5/GET.js +4 -0
  6. package/lib/plugins/service-betterportal-config-manager/bp-routes/menu/_renderer.bootstrap5/GET.js.map +1 -1
  7. package/lib/plugins/service-betterportal-config-manager/bp-routes/services/_renderer.bootstrap5/GET.d.ts.map +1 -1
  8. package/lib/plugins/service-betterportal-config-manager/bp-routes/services/_renderer.bootstrap5/GET.js +51 -1
  9. package/lib/plugins/service-betterportal-config-manager/bp-routes/services/_renderer.bootstrap5/GET.js.map +1 -1
  10. package/lib/plugins/service-betterportal-config-manager/index.d.ts.map +1 -1
  11. package/lib/plugins/service-betterportal-config-manager/index.js +8 -5
  12. package/lib/plugins/service-betterportal-config-manager/index.js.map +1 -1
  13. package/lib/plugins/service-betterportal-config-manager/menuEditor.d.ts.map +1 -1
  14. package/lib/plugins/service-betterportal-config-manager/menuEditor.js +78 -57
  15. package/lib/plugins/service-betterportal-config-manager/menuEditor.js.map +1 -1
  16. package/lib/plugins/service-betterportal-config-manager/roleAuthority.d.ts +2 -0
  17. package/lib/plugins/service-betterportal-config-manager/roleAuthority.d.ts.map +1 -1
  18. package/lib/plugins/service-betterportal-config-manager/roleAuthority.js +22 -0
  19. package/lib/plugins/service-betterportal-config-manager/roleAuthority.js.map +1 -1
  20. package/lib/plugins/service-betterportal-config-manager/setupTokens.d.ts +1 -0
  21. package/lib/plugins/service-betterportal-config-manager/setupTokens.d.ts.map +1 -1
  22. package/lib/plugins/service-betterportal-config-manager/setupTokens.js +42 -15
  23. package/lib/plugins/service-betterportal-config-manager/setupTokens.js.map +1 -1
  24. package/lib/schemas/service-betterportal-config-manager.json +1 -1
  25. package/lib/schemas/service-betterportal-config-manager.plugin.json +1 -1
  26. package/package.json +3 -3
@@ -109,27 +109,46 @@ function lookupServiceViews(serviceId) {
109
109
  path: v.path
110
110
  }));
111
111
  }
112
- function rowAttrs(item, depth) {
113
- return `id="bp-menu-row-${item.id}" draggable="true" data-bp-drag-item="${item.id}" data-bp-drag-type="${item.type}" data-bp-drag-depth="${depth}" style="padding-left: ${depth * 1.5 + 1}rem;"`;
112
+ function rowAttrs(item, depth, editing = false) {
113
+ return `id="bp-menu-row-${item.id}" draggable="${editing ? "false" : "true"}" data-bp-drag-item="${item.id}" data-bp-drag-type="${item.type}" data-bp-drag-depth="${depth}"${editing ? " data-bp-menu-editing" : ""} style="padding-left: ${depth * 1.5 + 1}rem;"`;
114
+ }
115
+ function editableTitleText(item, route) {
116
+ if (item.type === "section")
117
+ return item.title || "Section";
118
+ if (item.type === "external")
119
+ return item.title || item.href || "External";
120
+ if (item.type === "group")
121
+ return item.title || "Group";
122
+ return item.title || route?.title || route?.path || item.routeId || "(missing)";
114
123
  }
115
124
  function titleDisplayHtml(item, route, appId) {
116
- const titleText = item.type === "divider" ? "- divider -" :
117
- item.type === "section" ? `[${item.title || "Section"}]` :
118
- item.type === "external" ? (item.title || item.href || "External") :
119
- item.type === "group" ? (item.title || "Group") :
120
- item.title || route?.title || route?.path || item.routeId || "(missing)";
125
+ const editableTitle = editableTitleText(item, route);
126
+ const titleText = item.type === "divider" ? "- divider -" : item.type === "section" ? `[${editableTitle}]` : editableTitle;
121
127
  const editAction = item.type === "divider" ? "" : "edit-title";
122
128
  const strikeClass = item.enabled ? "" : "text-decoration-line-through opacity-50";
123
129
  if (!editAction) {
124
130
  return `<span class="text-secondary fst-italic">${escapeHtml(titleText)}</span>`;
125
131
  }
126
- return `<button type="button" class="bp-menu-title-display ${strikeClass}"
132
+ return `<button type="button" id="bp-menu-title-${item.id}" class="bp-menu-title-display ${strikeClass}"
127
133
  style="border:1px solid var(--bs-border-color); border-radius:0.375rem; padding:0.25rem 0.6rem; background:transparent; cursor:text; text-align:left; min-width:200px; font-weight:500;"
128
134
  hx-get="${API_BASE}/menu-editor/item?appId=${encodeURIComponent(appId)}&itemId=${encodeURIComponent(item.id)}&mode=edit-title"
129
- hx-target="#bp-menu-row-${item.id}"
135
+ hx-target="#bp-menu-title-${item.id}"
130
136
  hx-swap="outerHTML"
131
137
  title="Click to rename">${escapeHtml(titleText)}</button>`;
132
138
  }
139
+ function titleEditorHtml(item, route, appId) {
140
+ return `<form id="bp-menu-title-${item.id}" data-bp-menu-editing
141
+ hx-post="${API_BASE}/menu-editor/save-title" hx-target="#bp-menu-title-${item.id}" hx-swap="outerHTML"
142
+ class="d-flex align-items-center gap-1 flex-grow-1 m-0">
143
+ <input type="hidden" name="appId" value="${escapeHtml(appId)}" />
144
+ <input type="hidden" name="itemId" value="${escapeHtml(item.id)}" />
145
+ <input type="text" name="title" class="form-control form-control-sm flex-grow-1" value="${escapeHtml(editableTitleText(item, route))}" aria-label="Menu title" autofocus />
146
+ <button type="submit" class="btn btn-sm btn-success" title="Save">OK</button>
147
+ <button type="button" class="btn btn-sm btn-outline-secondary" title="Cancel"
148
+ hx-get="${API_BASE}/menu-editor/item?appId=${encodeURIComponent(appId)}&itemId=${encodeURIComponent(item.id)}&mode=display-title"
149
+ hx-target="#bp-menu-title-${item.id}" hx-swap="outerHTML">X</button>
150
+ </form>`;
151
+ }
133
152
  function subLineHtml(item, route, config, appId) {
134
153
  if (item.type === "group") {
135
154
  const count = item.children?.length ?? 0;
@@ -186,23 +205,8 @@ function renderRow(item, depth, mode, config, appDef, appId) {
186
205
  const routes = getRoutes(appDef);
187
206
  const route = item.routeId ? routes.find((r) => r.id === item.routeId) ?? null : null;
188
207
  const typeBadgeClass = item.type === "group" ? "text-bg-warning" : item.type === "external" ? "text-bg-info" : item.type === "link" ? "text-bg-primary" : "text-bg-secondary";
189
- if (mode === "edit-title") {
190
- return `<li ${rowAttrs(item, depth)} class="list-group-item">
191
- <form hx-post="${API_BASE}/menu-editor/save-title" hx-target="#bp-menu-row-${item.id}" hx-swap="outerHTML"
192
- class="d-flex align-items-center gap-2">
193
- <span class="badge ${typeBadgeClass}">${escapeHtml(item.type)}</span>
194
- <input type="hidden" name="appId" value="${escapeHtml(appId)}" />
195
- <input type="hidden" name="itemId" value="${escapeHtml(item.id)}" />
196
- <input type="text" name="title" class="form-control form-control-sm flex-grow-1" value="${escapeHtml(item.title ?? "")}" autofocus />
197
- <button type="submit" class="btn btn-sm btn-success" title="Save">OK</button>
198
- <button type="button" class="btn btn-sm btn-outline-secondary" title="Cancel"
199
- hx-get="${API_BASE}/menu-editor/item?appId=${encodeURIComponent(appId)}&itemId=${encodeURIComponent(item.id)}&mode=display"
200
- hx-target="#bp-menu-row-${item.id}" hx-swap="outerHTML">X</button>
201
- </form>
202
- </li>`;
203
- }
204
208
  if (mode === "edit-external" && item.type === "external") {
205
- return `<li ${rowAttrs(item, depth)} class="list-group-item">
209
+ return `<li ${rowAttrs(item, depth, true)} class="list-group-item">
206
210
  <form hx-post="${API_BASE}/menu-editor/save-external" hx-target="#bp-menu-row-${item.id}" hx-swap="outerHTML"
207
211
  class="d-flex flex-column gap-2">
208
212
  <div class="d-flex align-items-center gap-2">
@@ -260,6 +264,18 @@ function renderViewOptions(views, selectedViewId) {
260
264
  ...views.map((v) => `<option value="${escapeHtml(v.viewId)}" data-default-path="${escapeHtml(v.path)}"${v.viewId === selectedViewId ? " selected" : ""}>${escapeHtml(v.title)} (${escapeHtml(v.path)})</option>`)
261
265
  ].join("");
262
266
  }
267
+ function renderPathFields(itemId, path, targetPath) {
268
+ return `<div id="bp-paths-${itemId}" class="row g-2">
269
+ <div class="col-md-6">
270
+ <label class="form-label small mb-0">Public Path</label>
271
+ <input type="text" name="path" class="form-control form-control-sm font-monospace" value="${escapeHtml(path)}" required />
272
+ </div>
273
+ <div class="col-md-6">
274
+ <label class="form-label small mb-0">Target Path (service)</label>
275
+ <input type="text" name="targetPath" class="form-control form-control-sm font-monospace" value="${escapeHtml(targetPath)}" placeholder="/path?param=value" />
276
+ </div>
277
+ </div>`;
278
+ }
263
279
  async function renderEditLink(item, route, depth, config, appDef, appId) {
264
280
  const typeBadgeClass = "text-bg-primary";
265
281
  const services = getServicesForApp(config, appDef);
@@ -269,7 +285,7 @@ async function renderEditLink(item, route, depth, config, appDef, appId) {
269
285
  ...services.map((s) => `<option value="${escapeHtml(s.id)}"${s.id === route?.serviceId ? " selected" : ""}>${escapeHtml(s.title)}</option>`)
270
286
  ].join("");
271
287
  const viewOpts = renderViewOptions(views, route?.viewId ?? "");
272
- return `<li ${rowAttrs(item, depth)} class="list-group-item">
288
+ return `<li ${rowAttrs(item, depth, true)} class="list-group-item">
273
289
  <form hx-post="${API_BASE}/menu-editor/save-link" hx-target="#bp-menu-row-${item.id}" hx-swap="outerHTML"
274
290
  class="d-flex flex-column gap-2">
275
291
  <div class="d-flex align-items-center gap-2">
@@ -293,26 +309,25 @@ async function renderEditLink(item, route, depth, config, appDef, appId) {
293
309
  <label class="form-label small mb-0">View</label>
294
310
  <select id="bp-views-${item.id}" name="viewId" class="form-select form-select-sm" required
295
311
  hx-get="${API_BASE}/menu-editor/default-target"
296
- hx-target="[name=targetPath]"
312
+ hx-target="#bp-paths-${item.id}"
297
313
  hx-swap="outerHTML"
298
314
  hx-trigger="change"
299
315
  hx-include="closest form">${viewOpts}</select>
300
316
  </div>
301
317
  </div>
302
318
  <div class="row g-2">
303
- <div class="col-md-4">
319
+ <div class="col-md-6">
304
320
  <label class="form-label small mb-0">Title (menu)</label>
305
321
  <input type="text" name="title" class="form-control form-control-sm" value="${escapeHtml(item.title ?? "")}" placeholder="${escapeHtml(route?.title ?? "")}" />
306
322
  </div>
307
- <div class="col-md-4">
308
- <label class="form-label small mb-0">Public Path</label>
309
- <input type="text" name="path" class="form-control form-control-sm font-monospace" value="${escapeHtml(route?.path ?? "")}" required />
310
- </div>
311
- <div class="col-md-4">
312
- <label class="form-label small mb-0">Target Path (service)</label>
313
- <input type="text" name="targetPath" class="form-control form-control-sm font-monospace" value="${escapeHtml(route?.targetPath ?? "")}" placeholder="/path?param=value" />
323
+ <div class="col-md-6 d-flex align-items-end pb-2">
324
+ <div class="form-check">
325
+ <input class="form-check-input" type="checkbox" name="autoSetPaths" value="true" id="bp-auto-paths-${item.id}" checked />
326
+ <label class="form-check-label small" for="bp-auto-paths-${item.id}">Auto-set paths when the view changes</label>
327
+ </div>
314
328
  </div>
315
329
  </div>
330
+ ${renderPathFields(item.id, route?.path ?? "", route?.targetPath ?? "")}
316
331
  <div class="row g-2">
317
332
  <div class="col-md-6">
318
333
  <label class="form-label small mb-0">Unavailable service</label>
@@ -499,8 +514,16 @@ export function registerMenuEditorRoutes(app, store) {
499
514
  depth = computeDepth(menu, itemId, 0);
500
515
  if (depth < 0)
501
516
  depth = 0;
517
+ const route = found.item.routeId
518
+ ? (appDef.routes ?? []).find((candidate) => candidate.id === found.item.routeId) ?? null
519
+ : null;
520
+ if (mode === "edit-title") {
521
+ return htmlResponse(titleEditorHtml(found.item, route, appId), 200, "text/html; mode=fragment");
522
+ }
523
+ if (mode === "display-title") {
524
+ return htmlResponse(titleDisplayHtml(found.item, route, appId), 200, "text/html; mode=fragment");
525
+ }
502
526
  if (mode === "edit-link" && found.item.type === "link") {
503
- const route = (appDef.routes ?? []).find((r) => r.id === found.item.routeId) ?? null;
504
527
  const html = await renderEditLink(found.item, route, depth, config, appDef, appId);
505
528
  return htmlResponse(html, 200, "text/html; mode=fragment");
506
529
  }
@@ -538,22 +561,10 @@ export function registerMenuEditorRoutes(app, store) {
538
561
  const found2 = appDef2 ? locate(getMenu(appDef2), f.itemId) : null;
539
562
  if (!appDef2 || !found2)
540
563
  return htmlResponse("", 200, "text/html; mode=fragment");
541
- const depth = (() => {
542
- let d = -1;
543
- const walk = (xs, target, cur) => {
544
- for (const it of xs) {
545
- if (it.id === target) {
546
- d = cur;
547
- return;
548
- }
549
- if (it.type === "group" && it.children)
550
- walk(it.children, target, cur + 1);
551
- }
552
- };
553
- walk(getMenu(appDef2), f.itemId, 0);
554
- return d < 0 ? 0 : d;
555
- })();
556
- return htmlResponse(renderRow(found2.item, depth, "display", config2, appDef2, f.appId), 200, "text/html; mode=fragment", {
564
+ const route = found2.item.routeId
565
+ ? (appDef2.routes ?? []).find((candidate) => candidate.id === found2.item.routeId) ?? null
566
+ : null;
567
+ return htmlResponse(titleDisplayHtml(found2.item, route, f.appId), 200, "text/html; mode=fragment", {
557
568
  "HX-Trigger": "bp:menu-changed"
558
569
  });
559
570
  });
@@ -599,17 +610,27 @@ export function registerMenuEditorRoutes(app, store) {
599
610
  const views = lookupServiceViews(serviceId);
600
611
  return htmlResponse(renderViewOptions(views, ""), 200, "text/html; mode=fragment");
601
612
  });
602
- // View change -> returns new targetPath input pre-filled with view's default path
613
+ // View change -> optionally use the view target and an existing route's public path.
603
614
  app.get(`${API_BASE}/menu-editor/default-target`, async (event) => {
604
615
  const url = new URL(event.req.url ?? "", RELATIVE_URL_PARSE_BASE);
616
+ const appId = url.searchParams.get("appId") ?? "";
617
+ const itemId = url.searchParams.get("itemId") ?? "";
605
618
  const serviceId = url.searchParams.get("serviceId") ?? "";
606
619
  const viewId = url.searchParams.get("viewId") ?? "";
607
- let defaultPath = "";
608
- if (serviceId && viewId) {
620
+ let path = url.searchParams.get("path") ?? "";
621
+ let targetPath = url.searchParams.get("targetPath") ?? "";
622
+ if (url.searchParams.get("autoSetPaths") === "true" && serviceId && viewId) {
609
623
  const views = lookupServiceViews(serviceId);
610
- defaultPath = views.find((v) => v.viewId === viewId)?.path ?? "";
624
+ targetPath = views.find((v) => v.viewId === viewId)?.path ?? "";
625
+ const config = await store.loadConfig();
626
+ const appDef = getApp(config, appId);
627
+ const assignedRoute = (appDef?.routes ?? []).find((route) => route.kind !== "api" && route.serviceId === serviceId && route.viewId === viewId);
628
+ if (assignedRoute) {
629
+ path = assignedRoute.path;
630
+ targetPath = assignedRoute.targetPath || targetPath;
631
+ }
611
632
  }
612
- return htmlResponse(`<input type="text" name="targetPath" class="form-control form-control-sm font-monospace" value="${escapeHtml(defaultPath)}" placeholder="/path?param=value" />`, 200, "text/html; mode=fragment");
633
+ return htmlResponse(renderPathFields(itemId, path, targetPath), 200, "text/html; mode=fragment");
613
634
  });
614
635
  app.post(`${API_BASE}/menu-editor/save-external`, async (event) => {
615
636
  const f = await readFormBody(event);
@@ -1 +1 @@
1
- {"version":3,"file":"menuEditor.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/menuEditor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menuEditor.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/menuEditor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { AuthRoleAuthority } from "@betterportal/framework";
2
+ import type { CachedManifest } from "./syncApi.js";
2
3
  export declare const PROVIDER_ROLE_AUTHORITY_CAPABILITY = "auth.roles.authority.provider";
3
4
  export declare const BETTERPORTAL_ROLE_AUTHORITY_CAPABILITY = "auth.roles.authority.betterportal";
4
5
  export declare function supportedRoleAuthorities(capabilities: readonly string[]): AuthRoleAuthority[];
5
6
  export declare function resolveRoleAuthority(capabilities: readonly string[], requested?: AuthRoleAuthority): AuthRoleAuthority;
7
+ export declare function resolveRoleSyncUrl(serviceBaseUrl: string, manifest: Pick<CachedManifest, "capabilities" | "viewIndex"> | undefined, authority: AuthRoleAuthority, tenantId: string, appId: string): string | undefined;
6
8
  //# sourceMappingURL=roleAuthority.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"roleAuthority.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/roleAuthority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,eAAO,MAAM,kCAAkC,kCAAkC,CAAC;AAClF,eAAO,MAAM,sCAAsC,sCAAsC,CAAC;AAE1F,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAK7F;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,SAAS,CAAC,EAAE,iBAAiB,GAC5B,iBAAiB,CAInB"}
1
+ {"version":3,"file":"roleAuthority.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/roleAuthority.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,kCAAkC,kCAAkC,CAAC;AAClF,eAAO,MAAM,sCAAsC,sCAAsC,CAAC;AAE1F,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAK7F;AAED,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,SAAS,CAAC,EAAE,iBAAiB,GAC5B,iBAAiB,CAInB;AAED,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,cAAc,GAAG,WAAW,CAAC,GAAG,SAAS,EACxE,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CAoBpB"}
@@ -14,4 +14,26 @@ export function resolveRoleAuthority(capabilities, requested) {
14
14
  return requested;
15
15
  return supported.includes("provider") ? "provider" : supported[0];
16
16
  }
17
+ export function resolveRoleSyncUrl(serviceBaseUrl, manifest, authority, tenantId, appId) {
18
+ if (!manifest)
19
+ return undefined;
20
+ if (authority === "provider" && !manifest.capabilities.includes("auth.roles.sync"))
21
+ return undefined;
22
+ if (authority === "betterportal" && !manifest.capabilities.includes(BETTERPORTAL_ROLE_AUTHORITY_CAPABILITY))
23
+ return undefined;
24
+ const role = authority === "provider" ? "auth.roles.sync.view" : "auth.roles.sync";
25
+ const method = authority === "provider" ? "GET" : "POST";
26
+ const paths = Object.values(manifest.viewIndex).flatMap((view) => view.operations.some((operation) => operation.role === role && operation.method === method) ? [view.path] : []);
27
+ if (paths.length !== 1)
28
+ return undefined;
29
+ try {
30
+ const url = new URL(`${serviceBaseUrl.replace(/\/+$/, "")}/${paths[0].replace(/^\/+/, "")}`);
31
+ url.searchParams.set("tenantId", tenantId);
32
+ url.searchParams.set("appId", appId);
33
+ return url.toString();
34
+ }
35
+ catch {
36
+ return undefined;
37
+ }
38
+ }
17
39
  //# sourceMappingURL=roleAuthority.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"roleAuthority.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/roleAuthority.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAA+B,CAAC;AAClF,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAAmC,CAAC;AAE1F,MAAM,UAAU,wBAAwB,CAAC,YAA+B;IACtE,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,IAAI,YAAY,CAAC,QAAQ,CAAC,kCAAkC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtI,IAAI,YAAY,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,YAA+B,EAC/B,SAA6B;IAE7B,MAAM,SAAS,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACjE,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"roleAuthority.js","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/roleAuthority.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kCAAkC,GAAG,+BAA+B,CAAC;AAClF,MAAM,CAAC,MAAM,sCAAsC,GAAG,mCAAmC,CAAC;AAE1F,MAAM,UAAU,wBAAwB,CAAC,YAA+B;IACtE,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,IAAI,YAAY,CAAC,QAAQ,CAAC,kCAAkC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtI,IAAI,YAAY,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,YAA+B,EAC/B,SAA6B;IAE7B,MAAM,SAAS,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACjE,OAAO,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,cAAsB,EACtB,QAAwE,EACxE,SAA4B,EAC5B,QAAgB,EAChB,KAAa;IAEb,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,SAAS,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,SAAS,CAAC;IACrG,IAAI,SAAS,KAAK,cAAc,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9H,MAAM,IAAI,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACnF,MAAM,MAAM,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAC/G,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -16,4 +16,5 @@ export declare function registerSetupEndpoints(input: {
16
16
  cpState: CpBootstrapState;
17
17
  }): void;
18
18
  export declare function applyVerifiedServiceOrigin(service: TenantServiceRegistration | PlatformService | SharedServiceDefinition, expectedInstanceId: string, verifiedInstanceId: string | undefined, serviceUrl: string): boolean;
19
+ export declare function servicePluginIdsMatch(expectedPluginId: string | undefined, actualPluginId: string | undefined): boolean;
19
20
  //# sourceMappingURL=setupTokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupTokens.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/setupTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAEzH,OAAO,KAAK,EAAkE,mBAAmB,EAAE,eAAe,EAAc,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpN,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAoBzD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;CAC3B,GAAG,IAAI,CA0LP;AAwBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,yBAAyB,GAAG,eAAe,GAAG,uBAAuB,EAC9E,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GAAG,SAAS,EACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAKT"}
1
+ {"version":3,"file":"setupTokens.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/setupTokens.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAEzH,OAAO,KAAK,EAAkE,mBAAmB,EAAE,eAAe,EAAc,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpN,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAqBzD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;CAC3B,GAAG,IAAI,CAgNP;AAwBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,yBAAyB,GAAG,eAAe,GAAG,uBAAuB,EAC9E,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GAAG,SAAS,EACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAKT;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvH"}
@@ -83,13 +83,31 @@ export function registerSetupEndpoints(input) {
83
83
  if (!body || typeof body.serviceUrl !== "string" || body.serviceUrl.length === 0) {
84
84
  return jsonResponse({ error: "Missing serviceUrl" }, 400);
85
85
  }
86
- const serviceUrl = body.serviceUrl.replace(/\/+$/, "");
87
- const tenantScope = body.tenantId ? { tenantId: body.tenantId, appId: body.appId } : undefined;
86
+ let serviceUrl = body.serviceUrl.replace(/\/+$/, "");
87
+ let tenantScope = body.tenantId ? { tenantId: body.tenantId, appId: body.appId } : undefined;
88
88
  const sharedServiceId = typeof body.sharedServiceId === "string" && body.sharedServiceId.length > 0
89
89
  ? body.sharedServiceId
90
90
  : undefined;
91
91
  const instanceId = (typeof body.instanceId === "string" && body.instanceId.length > 0)
92
92
  ? body.instanceId : uuidv7();
93
+ let expectedPluginId;
94
+ if (body.reconfigure === true) {
95
+ const config = await input.storage.loadConfig();
96
+ const tenant = config.tenants.find((candidate) => candidate.services.some((service) => service.id === instanceId));
97
+ const existing = tenant?.services.find((service) => service.id === instanceId)
98
+ ?? config.platformServices.find((service) => service.id === instanceId);
99
+ if (!existing)
100
+ return jsonResponse({ error: "Only an existing non-shared service can be reconfigured" }, 404);
101
+ if (!existing.serviceId)
102
+ return jsonResponse({ error: "The existing service has no plugin id to verify" }, 409);
103
+ const requestedOrigin = normalizeServiceOrigin(serviceUrl);
104
+ if (!requestedOrigin || requestedOrigin !== normalizeServiceOrigin(existing.hostname)) {
105
+ return jsonResponse({ error: "Reconfiguration must use the service's registered URL" }, 409);
106
+ }
107
+ serviceUrl = requestedOrigin;
108
+ tenantScope = tenant ? { tenantId: tenant.id, appId: undefined } : undefined;
109
+ expectedPluginId = existing.serviceId;
110
+ }
93
111
  const setupToken = signSetupToken({
94
112
  privateKeyPem: input.cpState.keyPair.privateKeyPem,
95
113
  kid: input.cpState.keyPair.kid,
@@ -113,6 +131,7 @@ export function registerSetupEndpoints(input) {
113
131
  instanceId,
114
132
  sharedServiceId,
115
133
  tenantScope,
134
+ expectedPluginId,
116
135
  expiresAt: Date.now() + SETUP_TTL_SECONDS * 1000,
117
136
  redeemed: false
118
137
  });
@@ -144,6 +163,9 @@ export function registerSetupEndpoints(input) {
144
163
  pending.delete(jti);
145
164
  return jsonResponse({ error: "Setup token expired" }, 400);
146
165
  }
166
+ if (entry.expectedPluginId && !servicePluginIdsMatch(entry.expectedPluginId, body.pluginId)) {
167
+ return jsonResponse({ error: "The replacement service plugin id does not match the existing registration" }, 409);
168
+ }
147
169
  // Mint the real per-service API key. Stored in platform config as a tenant or platform service.
148
170
  const apiKey = `bp_sk_t_${randomBytes(32).toString("base64url")}`;
149
171
  entry.redeemed = true;
@@ -215,6 +237,9 @@ export function applyVerifiedServiceOrigin(service, expectedInstanceId, verified
215
237
  service.hostname = serviceUrl;
216
238
  return true;
217
239
  }
240
+ export function servicePluginIdsMatch(expectedPluginId, actualPluginId) {
241
+ return typeof expectedPluginId === "string" && expectedPluginId.length > 0 && expectedPluginId === actualPluginId;
242
+ }
218
243
  function readJti(token) {
219
244
  const parts = token.split(".");
220
245
  if (parts.length !== 3)
@@ -236,7 +261,7 @@ async function registerServiceInPlatformConfig(input) {
236
261
  const existing = config.sharedServiceCatalog.find((s) => s.id === input.sharedServiceId);
237
262
  if (!existing)
238
263
  throw new Error(`Shared service ${input.sharedServiceId} not found`);
239
- if (existing.serviceId && existing.serviceId !== input.pluginId) {
264
+ if (existing.serviceId && !servicePluginIdsMatch(existing.serviceId, input.pluginId)) {
240
265
  throw new Error(`Shared service ${existing.id} is linked to plugin ${existing.serviceId}, not installed plugin ${input.pluginId}`);
241
266
  }
242
267
  existing.serviceId = input.pluginId;
@@ -258,23 +283,22 @@ async function registerServiceInPlatformConfig(input) {
258
283
  const tenant = config.tenants.find((t) => t.id === input.tenantScope.tenantId);
259
284
  if (!tenant)
260
285
  throw new Error(`Tenant ${input.tenantScope.tenantId} not found`);
261
- // If this service is the auth provider for one of the tenant's apps,
262
- // store the JWKS on app.auth.publicKeys so the verifier uses static keys.
263
- if (input.jwks && input.tenantScope.appId) {
264
- const app = config.apps.find((a) => a.id === input.tenantScope.appId);
265
- const appAuth = app?.auth;
266
- if (app && appAuth && appAuth.serviceId === id) {
267
- appAuth.publicKeys = input.jwks;
268
- }
269
- }
270
- if (input.authProvider && input.tenantScope.appId) {
271
- const app = config.apps.find((a) => a.id === input.tenantScope.appId);
272
- if (app?.auth?.serviceId === id)
286
+ // A replacement auth service can rotate its keys, so refresh every app
287
+ // already bound to this service instance.
288
+ for (const app of config.apps) {
289
+ if (app.tenantId !== tenant.id || app.auth?.serviceId !== id)
290
+ continue;
291
+ if (input.jwks)
292
+ app.auth.publicKeys = input.jwks;
293
+ if (input.authProvider)
273
294
  applyAuthProviderMetadata(app.auth, input.authProvider);
274
295
  }
275
296
  // Update existing registration (bootstrap pre-creates the entry) or insert.
276
297
  const existing = tenant.services.find((s) => s.id === id);
277
298
  if (existing) {
299
+ if (existing.serviceId && !servicePluginIdsMatch(existing.serviceId, input.pluginId)) {
300
+ throw new Error(`Service ${existing.id} is linked to plugin ${existing.serviceId}, not installed plugin ${input.pluginId}`);
301
+ }
278
302
  existing.hostname = input.serviceUrl;
279
303
  existing.apiKeyHash = apiKeyHash;
280
304
  existing.publicKeyPem = input.publicKeyPem;
@@ -309,6 +333,9 @@ async function registerServiceInPlatformConfig(input) {
309
333
  else {
310
334
  const existing = config.platformServices.find((s) => s.id === id);
311
335
  if (existing) {
336
+ if (existing.serviceId && !servicePluginIdsMatch(existing.serviceId, input.pluginId)) {
337
+ throw new Error(`Service ${existing.id} is linked to plugin ${existing.serviceId}, not installed plugin ${input.pluginId}`);
338
+ }
312
339
  existing.hostname = input.serviceUrl;
313
340
  existing.apiKeyHash = apiKeyHash;
314
341
  existing.publicKeyPem = input.publicKeyPem;