Files
LogiFlow/apply-production-fixes.js
T
michaelschal b986763b6c Restrict employees from creating tasks and adjust other permissions
Update role permissions to prevent employees from creating tasks, while ensuring they can view tasks and suppliers. Adjustments also made to director and manager permissions for product validation.

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/69xEJ3P
2025-08-12 08:59:38 +00:00

146 lines
7.2 KiB
JavaScript

#!/usr/bin/env node
/**
* Script pour appliquer les corrections 403 employés sur votre serveur de production privé
* Ce script documente les changements à effectuer manuellement sur votre serveur
*/
console.log('🔧 === CORRECTIONS À APPLIQUER SUR VOTRE SERVEUR DE PRODUCTION ===\n');
console.log('📝 FICHIERS À MODIFIER SUR VOTRE SERVEUR PRIVÉ:');
console.log('================================================\n');
console.log('1️⃣ FICHIER: shared/permissions.ts');
console.log('-----------------------------------');
console.log('LIGNE À MODIFIER (environ ligne 84-91):');
console.log('');
console.log('// REMPLACER:');
console.log('tasks: {');
console.log(' admin: [\'view\', \'create\', \'edit\', \'delete\', \'validate\'],');
console.log(' directeur: [\'view\', \'create\', \'edit\', \'delete\', \'validate\'],');
console.log(' manager: [\'view\', \'validate\'],');
console.log(' employee: [\'view\'] // ← PROBLÈME ICI');
console.log('}');
console.log('');
console.log('// PAR:');
console.log('tasks: {');
console.log(' admin: [\'view\', \'create\', \'edit\', \'delete\', \'validate\'],');
console.log(' directeur: [\'view\', \'create\', \'edit\', \'delete\', \'validate\'],');
console.log(' manager: [\'view\', \'validate\'],');
console.log(' employee: [\'view\'] // ← PERMISSIONS INCHANGÉES - VOIR SEULEMENT');
console.log('}');
console.log('\n');
console.log('2️⃣ FICHIER: server/routes.ts');
console.log('-----------------------------');
console.log('CORRECTIONS MULTIPLES À EFFECTUER:\n');
console.log('A) Route GET /api/suppliers (environ ligne 188-194):');
console.log('// REMPLACER:');
console.log('if (!user || (user.role !== \'admin\' && user.role !== \'manager\')) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('');
console.log('// PAR:');
console.log('if (!user || (user.role !== \'admin\' && user.role !== \'manager\' && user.role !== \'directeur\' && user.role !== \'employee\')) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('\n');
console.log('B) Route POST /api/suppliers (environ ligne 240-242):');
console.log('// REMPLACER:');
console.log('if (user.role !== \'admin\' && user.role !== \'manager\') {');
console.log(' console.error(\'❌ Insufficient permissions:\', { userRole: user.role, required: [\'admin\', \'manager\'] });');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('');
console.log('// PAR:');
console.log('if (user.role !== \'admin\' && user.role !== \'manager\' && user.role !== \'directeur\') {');
console.log(' console.error(\'❌ Insufficient permissions:\', { userRole: user.role, required: [\'admin\', \'manager\', \'directeur\'] });');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('\n');
console.log('C) Route PUT /api/suppliers/:id (environ ligne 281-283):');
console.log('// REMPLACER:');
console.log('if (!user || (user.role !== \'admin\' && user.role !== \'manager\')) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('');
console.log('// PAR:');
console.log('if (!user || (user.role !== \'admin\' && user.role !== \'manager\' && user.role !== \'directeur\')) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('\n');
console.log('D) Route DELETE /api/suppliers/:id (environ ligne 298-300):');
console.log('// REMPLACER:');
console.log('if (!user || (user.role !== \'admin\' && user.role !== \'manager\')) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('');
console.log('// PAR:');
console.log('if (!user || (user.role !== \'admin\' && user.role !== \'directeur\')) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions" });');
console.log('}');
console.log('\n');
console.log('E) Route POST /api/dlc-products/:id/validate (environ ligne 2332-2334):');
console.log('// REMPLACER:');
console.log('if (!user || ![\'admin\', \'manager\'].includes(user.role)) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions to validate products" });');
console.log('}');
console.log('');
console.log('// PAR:');
console.log('if (!user || ![\'admin\', \'manager\', \'directeur\'].includes(user.role)) {');
console.log(' return res.status(403).json({ message: "Insufficient permissions to validate products" });');
console.log('}');
console.log('\n');
console.log('📋 ÉTAPES D\'APPLICATION:');
console.log('========================');
console.log('1. Connectez-vous à votre serveur de production');
console.log('2. Sauvegardez les fichiers originaux:');
console.log(' cp shared/permissions.ts shared/permissions.ts.backup');
console.log(' cp server/routes.ts server/routes.ts.backup');
console.log('3. Ouvrez shared/permissions.ts et effectuez la correction 1️⃣');
console.log('4. Ouvrez server/routes.ts et effectuez les corrections 2️⃣A à 2️⃣E');
console.log('5. Redémarrez votre serveur Node.js');
console.log('6. Testez avec un compte employé');
console.log('\n');
console.log('🧪 COMMANDES DE TEST POST-CORRECTION:');
console.log('====================================');
console.log('# Test rapide des fournisseurs pour employé:');
console.log('curl -X GET "https://votre-serveur.com/api/suppliers" \\');
console.log(' -H "Cookie: session=TOKEN_SESSION_EMPLOYE"');
console.log('');
console.log('# Test création tâche pour employé:');
console.log('curl -X POST "https://votre-serveur.com/api/tasks" \\');
console.log(' -H "Content-Type: application/json" \\');
console.log(' -H "Cookie: session=TOKEN_SESSION_EMPLOYE" \\');
console.log(' -d \'{"title":"Test","description":"Test employé","priority":"medium","status":"pending","groupId":1}\'');
console.log('\n');
console.log('✅ RÉSULTAT ATTENDU APRÈS CORRECTIONS:');
console.log('======================================');
console.log('- Employés peuvent accéder aux fournisseurs (modules Commandes Client et DLC)');
console.log('- Employés peuvent créer des tâches dans leurs magasins assignés');
console.log('- Directeurs peuvent valider les produits DLC');
console.log('- Plus d\'erreurs 403 pour les actions autorisées');
console.log('\n');
console.log('⚠️ REMARQUES IMPORTANTES:');
console.log('==========================');
console.log('- Ces corrections doivent être appliquées sur votre serveur de production');
console.log('- Testez d\'abord sur un environnement de staging si possible');
console.log('- Gardez les sauvegardes des fichiers originaux');
console.log('- Redémarrez le serveur après les modifications');
console.log('- Surveillez les logs après les changements');
console.log('\n');
console.log('🎯 Ces corrections résolvent spécifiquement:');
console.log('- Erreurs 403 sur /api/suppliers pour employés');
console.log('- Erreurs 403 sur /api/tasks POST pour employés');
console.log('- Erreurs 403 sur /api/dlc-products/:id/validate pour directeurs');
console.log('- Permissions incohérentes entre frontend et backend');