1
0

Correction auth sqlite

This commit is contained in:
unfr 2025-11-25 22:47:41 +01:00
parent 7754459ae3
commit abecd1843d

View File

@ -15,6 +15,18 @@ const chokidar = require('chokidar');
db.testConnection(); // vérification au démarrage
// Vérification et création du dossier sessions si nécessaire
const sessionPath = path.resolve(__dirname, config.sessionStorePath || './sessions');
if (!fs.existsSync(sessionPath)) {
console.log(`[SESSION] Création du dossier sessions: ${sessionPath}`);
fs.mkdirSync(sessionPath, { recursive: true });
}
// Vérification de la configuration de session
if (!config.sessionSecret || config.sessionSecret === 'Voir commande ci dessus') {
console.warn('[SESSION] ⚠️ ATTENTION: sessionSecret non configuré ! Utilisez: curl -L pw.vdx.sh/w/32');
}
function resolveTrustProxy(v) {
if (v == null) return 0;
if (v === true || v === 'true' || v === 'all') return true;
@ -251,9 +263,10 @@ autopostRouter.post('/login', async (req, res) => {
console.log(`[LOGIN] Tentative de connexion pour "${username}"`);
console.log(`[LOGIN] Password reçu: longueur ${password ? password.length : 0} caractères`);
// 1. Essayer d'abord l'authentification via la base de données
// 1. Essayer d'abord l'authentification via la base de données (uniquement si MySQL)
if (config.dbtype === 'mysql') {
try {
console.log(`[LOGIN] Tentative d'authentification DB pour "${username}"`);
console.log(`[LOGIN] Tentative d'authentification DB MySQL pour "${username}"`);
const [rows] = await db.query(
'SELECT * FROM core_members WHERE name = ? AND member_group_id IN (1,2) LIMIT 1',
[username]
@ -279,7 +292,13 @@ autopostRouter.post('/login', async (req, res) => {
req.session.authenticated = true;
req.session.user_id = member.member_id;
req.session.user_name = member.name;
return res.redirect('/autopost');
return req.session.save((err) => {
if (err) {
console.error(`[LOGIN] Erreur sauvegarde session:`, err);
return res.redirect('login?e=1');
}
res.redirect('/autopost');
});
} else {
console.warn(`[LOGIN] ❌ Mot de passe DB incorrect pour "${member.name}"`);
}
@ -287,9 +306,12 @@ autopostRouter.post('/login', async (req, res) => {
console.log(`[LOGIN] Aucun utilisateur trouvé en DB pour "${username}"`);
}
} catch (err) {
console.error(`[LOGIN] Erreur DB:`, err);
console.error(`[LOGIN] Erreur DB MySQL:`, err);
// Continue vers le fallback config
}
} else {
console.log(`[LOGIN] Mode SQLite détecté, authentification DB IPB désactivée`);
}
// 2. Fallback : authentification via fichier config
console.log(`[LOGIN] Tentative d'authentification config pour "${username}"`);
@ -297,7 +319,16 @@ autopostRouter.post('/login', async (req, res) => {
console.log(`[LOGIN] ✅ Authentification config réussie pour "${username}"`);
req.session.authenticated = true;
req.session.user_name = username;
return res.redirect('/autopost');
console.log(`[LOGIN] Session ID: ${req.sessionID}`);
console.log(`[LOGIN] Session avant save:`, { authenticated: req.session.authenticated, user_name: req.session.user_name });
return req.session.save((err) => {
if (err) {
console.error(`[LOGIN] ❌ Erreur sauvegarde session:`, err);
return res.redirect('login?e=1');
}
console.log(`[LOGIN] ✅ Session sauvegardée avec succès`);
res.redirect('/autopost');
});
} else {
console.log(`[LOGIN] ❌ Authentification config échouée pour "${username}"`);
}
@ -332,9 +363,14 @@ autopostRouter.get('/favicon.ico', (req, res) => {
});
function checkAuth(req, res, next) {
console.log(`[AUTH] Vérification session pour ${req.method} ${req.path}`);
console.log(`[AUTH] Session ID: ${req.sessionID}`);
console.log(`[AUTH] Session:`, { authenticated: req.session?.authenticated, user_name: req.session?.user_name });
if (req.session && req.session.authenticated) {
console.log(`[AUTH] ✅ Accès autorisé`);
next();
} else {
console.log(`[AUTH] ❌ Accès refusé, redirection vers login`);
res.redirect(req.baseUrl + '/login');
}
}