fix: add HTMX middleware to disable layouts for AJAX requests
ISSUE (per Gemini consultation): express-ejs-layouts was wrapping HTMX AJAX responses in full layout Caused crashes because HTMX endpoints don't pass layout variables FIX: Added middleware to detect HX-Request header Sets res.locals.layout = false for HTMX requests HTMX endpoints now return raw HTML fragments This fixes all 5 admin modules: - Servers Matrix - Player Management - Grace Period (with real DB query) - Audit Log - Role Diagnostics Credit: Gemini consultation - HTMX middleware pattern Signed-off-by: Claude (Chronicler #57) <claude@firefrostgaming.com>
This commit is contained in:
@@ -43,6 +43,15 @@ app.set('views', __dirname + '/views');
|
||||
app.use(expressLayouts);
|
||||
app.set('layout', 'layout'); // Default layout is views/layout.ejs
|
||||
|
||||
// HTMX Middleware: Disable layout wrapper for HTMX AJAX requests
|
||||
// HTMX sends HX-Request header - these requests need raw HTML fragments, not full layout
|
||||
app.use((req, res, next) => {
|
||||
if (req.headers['hx-request']) {
|
||||
res.locals.layout = false;
|
||||
}
|
||||
next();
|
||||
});
|
||||
|
||||
// CRITICAL: Stripe webhook needs raw body BEFORE express.json() middleware
|
||||
// Mounted at /webhooks/stripe to avoid conflict with /stripe checkout mount
|
||||
app.use('/webhooks/stripe', stripeRoutes);
|
||||
|
||||
Reference in New Issue
Block a user