[object Object]

← back to Stringwallpaper

wire api-vendor-redact middleware as first app.use — defends /api/facets vendors object + /api/products ?vendor= against vendor-name leaks per fleet standing rule

a10360a440e9deb66075e45e365eb05573bff2a7 · 2026-05-25 21:35:36 -0700 · Steve

Files touched

Diff

commit a10360a440e9deb66075e45e365eb05573bff2a7
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon May 25 21:35:36 2026 -0700

    wire api-vendor-redact middleware as first app.use — defends /api/facets vendors object + /api/products ?vendor= against vendor-name leaks per fleet standing rule
---
 server.js | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/server.js b/server.js
index 5a71a47..072fa24 100644
--- a/server.js
+++ b/server.js
@@ -124,6 +124,14 @@ function sortProducts(list, mode) {
 }
 
 
+// Vendor-name redaction across every /api/* response.
+// /api/facets emits a `vendors` object and /api/products accepts `?vendor=` —
+// the customer-facing surface must never leak DW vendor identities. This
+// middleware (canonical at ~/Projects/_shared/api-vendor-redact.js) scrubs
+// `vendor` keys + `vendors` objects from JSON responses to /api/* routes.
+try { app.use(require('../_shared/api-vendor-redact')); }
+catch (e) { console.error(`[${__SITE}] api-vendor-redact middleware unavailable (${e.message})`); }
+
 app.use(express.json({ limit: "256kb" }));
 // Site config — prefer _shared/site-config (canonical) but fall back to an
 // inline minimal loader so this server.js is self-contained on Kamatera.

← 62f46a0 pull-from-shopify: use shared classifier with rails primary,  ·  back to Stringwallpaper  ·  /api/facets honors q/aesthetic/vendor filters so chip counts 4ccdbd2 →