diff --git a/routes/settings.routes.js b/routes/settings.routes.js index e3e9e2e..8943729 100644 --- a/routes/settings.routes.js +++ b/routes/settings.routes.js @@ -30,6 +30,43 @@ router.get('/', async (req, res) => { } }); +/** + * PUT /api/settings + * Mettre à jour plusieurs paramètres en une fois + */ +router.put('/', async (req, res) => { + try { + const settings = req.body; + + // Mettre à jour chaque paramètre + for (const [key, value] of Object.entries(settings)) { + // Ignorer les valeurs undefined ou null + if (value === undefined || value === null) continue; + + // Vérifier si le paramètre existe + const existing = await getOne('SELECT id FROM settings WHERE key = ?', [key]); + + if (existing) { + await runQuery( + 'UPDATE settings SET value = ?, updated_at = CURRENT_TIMESTAMP WHERE key = ?', + [value, key] + ); + } else { + await runQuery( + 'INSERT INTO settings (key, value) VALUES (?, ?)', + [key, value] + ); + } + } + + logger.info(`${Object.keys(settings).length} paramètres mis à jour`); + res.json({ message: 'Paramètres mis à jour avec succès' }); + } catch (error) { + logger.error('Erreur lors de la mise à jour des paramètres:', error); + res.status(500).json({ error: 'Erreur serveur' }); + } +}); + /** * GET /api/settings/:key * Récupérer un paramètre spécifique diff --git a/server.js b/server.js index ac9136d..93c4e64 100644 --- a/server.js +++ b/server.js @@ -13,6 +13,10 @@ const { initDatabase } = require('./config/database'); const app = express(); const PORT = process.env.PORT || 2222; +// Configurer Express pour faire confiance au proxy (nginx, etc.) +// Nécessaire pour express-rate-limit et pour obtenir la vraie IP du client +app.set('trust proxy', true); + // Créer les dossiers nécessaires (silencieusement, ils peuvent déjà exister via les volumes Docker) const dataDir = path.join(__dirname, 'data'); const uploadsDir = path.join(__dirname, 'public', 'uploads');