mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-12 09:47:54 +02:00
Fixes bugs that prevented employees from viewing supplier lists and restricted their access to order and delivery creation functionalities. Replit-Commit-Author: Agent Replit-Commit-Session-Id: b163d4c0-de5e-4f4e-a9c0-aed4c7049718 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/b163d4c0-de5e-4f4e-a9c0-aed4c7049718/9RgkyCi
152 lines
5.9 KiB
JavaScript
152 lines
5.9 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Script de test pour vérifier l'accès des employés aux fournisseurs
|
|
* À exécuter sur le serveur de production pour diagnostiquer les problèmes d'accès
|
|
*/
|
|
|
|
const https = require('https');
|
|
const fs = require('fs');
|
|
|
|
// Configuration pour votre serveur de production
|
|
const PRODUCTION_URL = process.env.PRODUCTION_URL || 'https://votre-serveur-production.com';
|
|
const TEST_EMPLOYEE_CREDENTIALS = {
|
|
username: process.env.TEST_EMPLOYEE_USERNAME || 'test_employee',
|
|
password: process.env.TEST_EMPLOYEE_PASSWORD || 'password123'
|
|
};
|
|
|
|
console.log('🧪 === TEST D\'ACCÈS FOURNISSEURS POUR EMPLOYÉS ===\n');
|
|
|
|
async function makeRequest(path, method = 'GET', data = null, cookies = '') {
|
|
return new Promise((resolve, reject) => {
|
|
const url = new URL(path, PRODUCTION_URL);
|
|
const options = {
|
|
hostname: url.hostname,
|
|
port: url.port || (url.protocol === 'https:' ? 443 : 80),
|
|
path: url.pathname + url.search,
|
|
method: method,
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'User-Agent': 'LogiFlow-Test-Script/1.0',
|
|
...(cookies ? { 'Cookie': cookies } : {}),
|
|
...(data ? { 'Content-Length': Buffer.byteLength(JSON.stringify(data)) } : {})
|
|
}
|
|
};
|
|
|
|
const req = https.request(options, (res) => {
|
|
let body = '';
|
|
res.on('data', (chunk) => body += chunk);
|
|
res.on('end', () => {
|
|
try {
|
|
const parsed = JSON.parse(body);
|
|
resolve({
|
|
status: res.statusCode,
|
|
headers: res.headers,
|
|
data: parsed
|
|
});
|
|
} catch (e) {
|
|
resolve({
|
|
status: res.statusCode,
|
|
headers: res.headers,
|
|
data: body
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
req.on('error', reject);
|
|
|
|
if (data) {
|
|
req.write(JSON.stringify(data));
|
|
}
|
|
|
|
req.end();
|
|
});
|
|
}
|
|
|
|
async function testEmployeeSupplierAccess() {
|
|
try {
|
|
console.log('1️⃣ Test de connexion employé...');
|
|
|
|
// Étape 1: Se connecter avec un compte employé
|
|
const loginResponse = await makeRequest('/api/login', 'POST', TEST_EMPLOYEE_CREDENTIALS);
|
|
|
|
console.log(` Status: ${loginResponse.status}`);
|
|
console.log(` Response: ${JSON.stringify(loginResponse.data, null, 2)}\n`);
|
|
|
|
if (loginResponse.status !== 200) {
|
|
console.error('❌ Échec de connexion employé');
|
|
console.error(' Vérifiez que le compte employé existe et que les identifiants sont corrects');
|
|
return;
|
|
}
|
|
|
|
// Extraire les cookies de session
|
|
const setCookieHeaders = loginResponse.headers['set-cookie'] || [];
|
|
const cookies = setCookieHeaders.join('; ');
|
|
|
|
console.log('2️⃣ Test d\'accès aux fournisseurs...');
|
|
|
|
// Étape 2: Tester l'accès à la liste des fournisseurs
|
|
const suppliersResponse = await makeRequest('/api/suppliers', 'GET', null, cookies);
|
|
|
|
console.log(` Status: ${suppliersResponse.status}`);
|
|
console.log(` Response: ${JSON.stringify(suppliersResponse.data, null, 2)}\n`);
|
|
|
|
if (suppliersResponse.status === 200) {
|
|
console.log('✅ SUCCÈS: L\'employé peut accéder aux fournisseurs');
|
|
console.log(` Nombre de fournisseurs retournés: ${Array.isArray(suppliersResponse.data) ? suppliersResponse.data.length : 'N/A'}`);
|
|
} else if (suppliersResponse.status === 403) {
|
|
console.log('❌ ÉCHEC: L\'employé n\'a pas l\'autorisation d\'accéder aux fournisseurs');
|
|
console.log(' Le problème est confirmé - permissions insuffisantes');
|
|
} else {
|
|
console.log(`⚠️ ERREUR INATTENDUE: Status ${suppliersResponse.status}`);
|
|
}
|
|
|
|
console.log('\n3️⃣ Test d\'accès aux fournisseurs DLC...');
|
|
|
|
// Étape 3: Tester l'accès aux fournisseurs DLC spécifiquement
|
|
const dlcSuppliersResponse = await makeRequest('/api/suppliers?dlc=true', 'GET', null, cookies);
|
|
|
|
console.log(` Status: ${dlcSuppliersResponse.status}`);
|
|
console.log(` Response: ${JSON.stringify(dlcSuppliersResponse.data, null, 2)}\n`);
|
|
|
|
if (dlcSuppliersResponse.status === 200) {
|
|
console.log('✅ SUCCÈS: L\'employé peut accéder aux fournisseurs DLC');
|
|
console.log(` Nombre de fournisseurs DLC retournés: ${Array.isArray(dlcSuppliersResponse.data) ? dlcSuppliersResponse.data.length : 'N/A'}`);
|
|
} else if (dlcSuppliersResponse.status === 403) {
|
|
console.log('❌ ÉCHEC: L\'employé n\'a pas l\'autorisation d\'accéder aux fournisseurs DLC');
|
|
}
|
|
|
|
// Résumé final
|
|
console.log('\n📊 === RÉSUMÉ DU TEST ===');
|
|
console.log(`Connexion employé: ${loginResponse.status === 200 ? '✅ OK' : '❌ ÉCHEC'}`);
|
|
console.log(`Accès fournisseurs: ${suppliersResponse.status === 200 ? '✅ OK' : '❌ ÉCHEC'}`);
|
|
console.log(`Accès fournisseurs DLC: ${dlcSuppliersResponse.status === 200 ? '✅ OK' : '❌ ÉCHEC'}`);
|
|
|
|
if (suppliersResponse.status === 200 && dlcSuppliersResponse.status === 200) {
|
|
console.log('\n🎉 TOUS LES TESTS PASSÉS - L\'accès employé aux fournisseurs fonctionne correctement');
|
|
} else {
|
|
console.log('\n⚠️ PROBLÈME DÉTECTÉ - Vérifiez les permissions serveur et la configuration des rôles');
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('💥 Erreur lors du test:', error.message);
|
|
console.error(' Vérifiez que le serveur de production est accessible');
|
|
}
|
|
}
|
|
|
|
// Instructions d'utilisation
|
|
console.log('📋 Instructions:');
|
|
console.log('1. Assurez-vous d\'avoir un compte employé de test');
|
|
console.log('2. Configurez les variables d\'environnement si nécessaire:');
|
|
console.log(' - PRODUCTION_URL=https://votre-serveur.com');
|
|
console.log(' - TEST_EMPLOYEE_USERNAME=nom_utilisateur');
|
|
console.log(' - TEST_EMPLOYEE_PASSWORD=mot_de_passe');
|
|
console.log('3. Exécutez: node test-employee-supplier-access.js\n');
|
|
|
|
// Exécuter le test si le script est appelé directement
|
|
if (require.main === module) {
|
|
testEmployeeSupplierAccess().catch(console.error);
|
|
}
|
|
|
|
module.exports = { testEmployeeSupplierAccess }; |