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);
|
||||
|
||||
// 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;
|
||||
|
||||
Reference in New Issue
Block a user