From f927b85dc6261b02eb35551d3af36874c8992461 Mon Sep 17 00:00:00 2001 From: Sidney Date: Thu, 28 May 2026 08:59:41 -0300 Subject: [PATCH] fix: replace Express 5 incompatible optional param (:slug?) with two explicit routes --- manager/server.selfhosted.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/manager/server.selfhosted.js b/manager/server.selfhosted.js index 2c76e18..e9af600 100644 --- a/manager/server.selfhosted.js +++ b/manager/server.selfhosted.js @@ -2993,9 +2993,9 @@ async function startServer() { }); // Página pública de pré-matrícula (API que retorna dados do formulário) - app.get('/api/prematricula/public/:slug?', async (req, res) => { + // Handler compartilhado para evitar duplicação + async function handlePublicPreMatricula(req, res, slug) { try { - const slug = req.params.slug || 'pre-matricula'; const { rows: cfgRows } = await pool.query( 'SELECT * FROM prematricula_config WHERE (slug = $1 OR id = 1) AND status = $2 ORDER BY id ASC LIMIT 1', [slug, 'published'] @@ -3024,7 +3024,12 @@ async function startServer() { escola: { nome: appData?.profile?.name || 'EduManager', logo: appData?.logo || '' } }); } catch (e) { console.error(e); res.status(500).json({ error: e.message }); } - }); + } + + // Rota sem slug (usa slug padrão) + app.get('/api/prematricula/public', (req, res) => handlePublicPreMatricula(req, res, 'pre-matricula')); + // Rota com slug explícito + app.get('/api/prematricula/public/:slug', (req, res) => handlePublicPreMatricula(req, res, req.params.slug)); // Rota que serve a página HTML pública do formulário de pré-matrícula app.get('/pre-matricula', async (req, res) => {