Files
LogiFlow/PRODUCTION-FIXES-FINAL.md
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

4.1 KiB

CORRECTIONS FINALES POUR SERVEUR DE PRODUCTION

Erreurs 403 Employés - Version Corrigée

⚠️ CLARIFICATION IMPORTANTE

Les employés ne doivent PAS créer de tâches, seulement les voir

CORRECTIONS À APPLIQUER SUR VOTRE SERVEUR PRIVÉ

1️⃣ FICHIER: server/routes.ts SEULEMENT

Les permissions dans shared/permissions.ts restent inchangées

A) Route GET /api/suppliers (environ ligne 188-194):

// REMPLACER:
if (!user || (user.role !== 'admin' && user.role !== 'manager')) {
  return res.status(403).json({ message: "Insufficient permissions" });
}

// PAR:
if (!user || (user.role !== 'admin' && user.role !== 'manager' && user.role !== 'directeur' && user.role !== 'employee')) {
  return res.status(403).json({ message: "Insufficient permissions" });
}

B) Route POST /api/suppliers (environ ligne 240-242):

// REMPLACER:
if (user.role !== 'admin' && user.role !== 'manager') {
  console.error('❌ Insufficient permissions:', { userRole: user.role, required: ['admin', 'manager'] });
  return res.status(403).json({ message: "Insufficient permissions" });
}

// PAR:
if (user.role !== 'admin' && user.role !== 'manager' && user.role !== 'directeur') {
  console.error('❌ Insufficient permissions:', { userRole: user.role, required: ['admin', 'manager', 'directeur'] });
  return res.status(403).json({ message: "Insufficient permissions" });
}

C) Route PUT /api/suppliers/:id (environ ligne 281-283):

// REMPLACER:
if (!user || (user.role !== 'admin' && user.role !== 'manager')) {
  return res.status(403).json({ message: "Insufficient permissions" });
}

// PAR:
if (!user || (user.role !== 'admin' && user.role !== 'manager' && user.role !== 'directeur')) {
  return res.status(403).json({ message: "Insufficient permissions" });
}

D) Route DELETE /api/suppliers/:id (environ ligne 298-300):

// REMPLACER:
if (!user || (user.role !== 'admin' && user.role !== 'manager')) {
  return res.status(403).json({ message: "Insufficient permissions" });
}

// PAR:
if (!user || (user.role !== 'admin' && user.role !== 'directeur')) {
  return res.status(403).json({ message: "Insufficient permissions" });
}

E) Route POST /api/dlc-products/:id/validate (environ ligne 2332-2334):

// REMPLACER:
if (!user || !['admin', 'manager'].includes(user.role)) {
  return res.status(403).json({ message: "Insufficient permissions to validate products" });
}

// PAR:
if (!user || !['admin', 'manager', 'directeur'].includes(user.role)) {
  return res.status(403).json({ message: "Insufficient permissions to validate products" });
}

📋 ÉTAPES D'APPLICATION SIMPLIFIÉES

  1. Sauvegarde (sur votre serveur de production):
cp server/routes.ts server/routes.ts.backup
  1. Modification: Ouvrez server/routes.ts et effectuez les 5 corrections ci-dessus

  2. Redémarrage: Redémarrez votre serveur Node.js

  3. Test: Testez avec un compte employé

✅ RÉSULTAT ATTENDU

  • ✅ Employés peuvent voir les fournisseurs (modules Commandes Client et DLC)
  • ✅ Employés peuvent voir la page tâches et les tâches existantes
  • ❌ Employés ne peuvent PAS créer de tâches (comportement inchangé)
  • ✅ Directeurs peuvent valider les produits DLC
  • ✅ Plus d'erreurs 403 sur les actions autorisées

🔍 PERMISSIONS FINALES PAR RÔLE

Employés:

  • Fournisseurs: Lecture seulement
  • Tâches: Lecture seulement (voir page et tâches)
  • Commandes Client: Voir + Créer
  • DLC: Voir + Créer

Problème Résolu:

Les erreurs 403 venaient principalement des restrictions d'accès aux fournisseurs, pas des tâches. Les employés ont besoin de voir les fournisseurs pour créer des commandes client et des produits DLC.

🧪 COMMANDE DE TEST POST-CORRECTION

# Test accès fournisseurs pour employé (doit fonctionner):
curl -X GET "https://votre-serveur.com/api/suppliers" \
  -H "Cookie: session=TOKEN_SESSION_EMPLOYE"

# Résultat attendu: HTTP 200 avec liste des fournisseurs

Note: Les permissions des tâches restent inchangées - les employés peuvent seulement voir les tâches, pas les créer.