fix(express): reemplazar wildcard /settings/* por rutas explicitas compatibles con Express 5

This commit is contained in:
2026-09-23 16:48:25 -03:00
parent 6907134c5e
commit 7be57aeeb2
+16 -7
View File
@@ -1346,7 +1346,7 @@ const handleGlobalSettings = async (req, res) => {
router.get(['/settings', '/global-config', '/config'], handleGlobalSettings);
// Endpoint específico para alternar modo demo y cuentas default
router.post(['/settings/demo-mode', '/demo-mode'], async (req, res) => {
router.post('/settings/demo-mode', async (req, res) => {
try {
const resp = await req.apiClient.post('/settings/demo-mode', req.body);
return res.status(resp.status || 200).json(resp.data);
@@ -1359,24 +1359,33 @@ router.post(['/settings/demo-mode', '/demo-mode'], async (req, res) => {
}
});
// Proxy para cualquier subruta de configuración (smtp, google-oauth, moodle, etc.)
router.all('/settings/*', async (req, res) => {
// Función forwarder para acciones de configuración hacia Flask
const forwardSettingsAction = async (req, res) => {
try {
const subPath = req.params[0];
const relativeUrl = req.originalUrl.replace(/^\/admin/, '');
const resp = await req.apiClient({
method: req.method,
url: `/settings/${subPath}`,
url: relativeUrl,
data: req.body,
params: req.query
});
return res.status(resp.status).json(resp.data);
} catch (err) {
console.error(`Error in /admin/settings/${req.params[0]}:`, err.response?.data || err.message);
console.error(`Error in settings proxy (${req.method} ${req.originalUrl}):`, err.response?.data || err.message);
return res.status(err.response?.status || 500).json(err.response?.data || {
status: 'error',
message: err.response?.data?.message || err.message
});
}
});
};
router.post('/settings/smtp', forwardSettingsAction);
router.post('/settings/smtp/test', forwardSettingsAction);
router.post('/settings/auth-providers', forwardSettingsAction);
router.post('/settings/google-oauth', forwardSettingsAction);
router.post('/settings/moodle', forwardSettingsAction);
router.post('/settings/moodle/test', forwardSettingsAction);
router.post('/settings/moodle/sync', forwardSettingsAction);
router.get('/settings/moodle/stats', forwardSettingsAction);
module.exports = router;