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 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) { function resolveTrustProxy(v) {
if (v == null) return 0; if (v == null) return 0;
if (v === true || v === 'true' || v === 'all') return true; if (v === true || v === 'true' || v === 'all') return true;
@ -251,44 +263,54 @@ autopostRouter.post('/login', async (req, res) => {
console.log(`[LOGIN] Tentative de connexion pour "${username}"`); console.log(`[LOGIN] Tentative de connexion pour "${username}"`);
console.log(`[LOGIN] Password reçu: longueur ${password ? password.length : 0} caractères`); 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)
try { if (config.dbtype === 'mysql') {
console.log(`[LOGIN] Tentative d'authentification DB pour "${username}"`); try {
const [rows] = await db.query( console.log(`[LOGIN] Tentative d'authentification DB MySQL pour "${username}"`);
'SELECT * FROM core_members WHERE name = ? AND member_group_id IN (1,2) LIMIT 1', const [rows] = await db.query(
[username] 'SELECT * FROM core_members WHERE name = ? AND member_group_id IN (1,2) LIMIT 1',
); [username]
);
console.log(`[LOGIN] Nombre de résultats DB: ${rows.length}`); console.log(`[LOGIN] Nombre de résultats DB: ${rows.length}`);
if (rows.length > 0) { if (rows.length > 0) {
const member = rows[0]; const member = rows[0];
console.log(`[LOGIN] Utilisateur trouvé en DB:`, { console.log(`[LOGIN] Utilisateur trouvé en DB:`, {
member_id: member.member_id, member_id: member.member_id,
name: member.name, name: member.name,
group: member.member_group_id group: member.member_group_id
}); });
// Vérification du hash Argon2id // Vérification du hash Argon2id
console.log(`[LOGIN] Vérification du mot de passe avec Argon2id`); console.log(`[LOGIN] Vérification du mot de passe avec Argon2id`);
const valid = await argon2.verify(member.members_pass_hash, password); const valid = await argon2.verify(member.members_pass_hash, password);
console.log(`[LOGIN] Résultat vérification Argon2id: ${valid}`); console.log(`[LOGIN] Résultat vérification Argon2id: ${valid}`);
if (valid) { if (valid) {
console.log(`[LOGIN] ✅ Authentification DB réussie pour "${member.name}"`); console.log(`[LOGIN] ✅ Authentification DB réussie pour "${member.name}"`);
req.session.authenticated = true; req.session.authenticated = true;
req.session.user_id = member.member_id; req.session.user_id = member.member_id;
req.session.user_name = member.name; 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}"`);
}
} else { } else {
console.warn(`[LOGIN] ❌ Mot de passe DB incorrect pour "${member.name}"`); console.log(`[LOGIN] Aucun utilisateur trouvé en DB pour "${username}"`);
} }
} else { } catch (err) {
console.log(`[LOGIN] Aucun utilisateur trouvé en DB pour "${username}"`); console.error(`[LOGIN] Erreur DB MySQL:`, err);
// Continue vers le fallback config
} }
} catch (err) { } else {
console.error(`[LOGIN] Erreur DB:`, err); console.log(`[LOGIN] Mode SQLite détecté, authentification DB IPB désactivée`);
// Continue vers le fallback config
} }
// 2. Fallback : authentification via fichier config // 2. Fallback : authentification via fichier config
@ -297,7 +319,16 @@ autopostRouter.post('/login', async (req, res) => {
console.log(`[LOGIN] ✅ Authentification config réussie pour "${username}"`); console.log(`[LOGIN] ✅ Authentification config réussie pour "${username}"`);
req.session.authenticated = true; req.session.authenticated = true;
req.session.user_name = username; 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 { } else {
console.log(`[LOGIN] ❌ Authentification config échouée pour "${username}"`); console.log(`[LOGIN] ❌ Authentification config échouée pour "${username}"`);
} }
@ -332,9 +363,14 @@ autopostRouter.get('/favicon.ico', (req, res) => {
}); });
function checkAuth(req, res, next) { 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) { if (req.session && req.session.authenticated) {
console.log(`[AUTH] ✅ Accès autorisé`);
next(); next();
} else { } else {
console.log(`[AUTH] ❌ Accès refusé, redirection vers login`);
res.redirect(req.baseUrl + '/login'); res.redirect(req.baseUrl + '/login');
} }
} }