fix(express): reemplazar wildcard /settings/* por rutas explicitas compatibles con Express 5
This commit is contained in:
@@ -1346,7 +1346,7 @@ const handleGlobalSettings = async (req, res) => {
|
|||||||
router.get(['/settings', '/global-config', '/config'], handleGlobalSettings);
|
router.get(['/settings', '/global-config', '/config'], handleGlobalSettings);
|
||||||
|
|
||||||
// Endpoint específico para alternar modo demo y cuentas default
|
// 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 {
|
try {
|
||||||
const resp = await req.apiClient.post('/settings/demo-mode', req.body);
|
const resp = await req.apiClient.post('/settings/demo-mode', req.body);
|
||||||
return res.status(resp.status || 200).json(resp.data);
|
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.)
|
// Función forwarder para acciones de configuración hacia Flask
|
||||||
router.all('/settings/*', async (req, res) => {
|
const forwardSettingsAction = async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const subPath = req.params[0];
|
const relativeUrl = req.originalUrl.replace(/^\/admin/, '');
|
||||||
const resp = await req.apiClient({
|
const resp = await req.apiClient({
|
||||||
method: req.method,
|
method: req.method,
|
||||||
url: `/settings/${subPath}`,
|
url: relativeUrl,
|
||||||
data: req.body,
|
data: req.body,
|
||||||
params: req.query
|
params: req.query
|
||||||
});
|
});
|
||||||
return res.status(resp.status).json(resp.data);
|
return res.status(resp.status).json(resp.data);
|
||||||
} catch (err) {
|
} 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 || {
|
return res.status(err.response?.status || 500).json(err.response?.data || {
|
||||||
status: 'error',
|
status: 'error',
|
||||||
message: err.response?.data?.message || err.message
|
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;
|
module.exports = router;
|
||||||
|
|||||||
Reference in New Issue
Block a user