Files
LogiFlow/PRODUCTION-FIXES-FINAL.md
T
michaelschal b9b85fba78 Fix task access and visibility for employee role users
Update client/src/pages/Tasks.tsx to restrict user fetching and action button visibility based on role ('admin', 'manager', 'directeur'). Also addresses 403 errors for employees in server routes.

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/vMSppUD
2025-08-12 09:05:02 +00:00

4.4 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: client/src/pages/Tasks.tsx

Correction erreur 403 /api/users

A) Ligne 84-85 (requête des utilisateurs):

// REMPLACER:
enabled: !!user,

// PAR:
enabled: !!user && (user.role === 'admin' || user.role === 'manager' || user.role === 'directeur'),

2️⃣ FICHIER: server/routes.ts

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.