mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
Fix: Routes settings et configuration proxy
Corrections critiques:
1. Ajout de la route PUT /api/settings manquante
- Permet la mise à jour de plusieurs paramètres en une fois
- Utilisé par le frontend pour sauvegarder la configuration
- Erreur 404 résolue
2. Configuration trust proxy dans Express
- app.set('trust proxy', true)
- Nécessaire car l'application est derrière nginx/proxy
- Résout l'erreur express-rate-limit avec X-Forwarded-For
- Permet d'obtenir la vraie IP du client
Routes settings maintenant complètes:
- GET /api/settings - Récupérer tous les paramètres
- PUT /api/settings - Mettre à jour plusieurs paramètres (NOUVEAU)
- GET /api/settings/:key - Récupérer un paramètre
- PUT /api/settings/:key - Mettre à jour un paramètre
- DELETE /api/settings/:key - Supprimer un paramètre
This commit is contained in:
2 files changed
+41
No files matched your search
@@ -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
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in new issue
Block a user