diff --git a/replit.md b/replit.md index 6c9466b..c6bf4bc 100644 --- a/replit.md +++ b/replit.md @@ -19,6 +19,19 @@ La plateforme fournit une gestion robuste des flux de travail de livraison avec ## Recent Changes +### 2025-08-14 - Correction permissions employés commandes clients + modals SAV +✅ **Problème permissions employés résolu** : +- **Problème** : Employés ne pouvaient pas créer de commandes clients (erreur "Access denied to this group") +- **Cause** : Vérification permissions trop restrictive dans `/api/customer-orders` +- **Solution** : Autorisation pour rôles 'manager', 'directeur', 'employee' dans leurs groupes assignés +- **Logs ajoutés** : Debug complet des permissions pour diagnostic production + +✅ **Boutons SAV "Détail" et "Éditer" opérationnels** : +- **Bouton Détail** : Modal complet avec toutes informations ticket +- **Bouton Éditer** : Formulaire pré-rempli pour modification +- **Interface responsive** : Affichage optimisé tous écrans +- **Permissions** : Boutons visibles selon rôles utilisateur + ### 2025-08-14 - Correction critique SAV production + route d'urgence 🔧 **Problème production SAV entièrement résolu** : - **Problème** : Tables SAV en production manquaient colonnes essentielles (priority, problem_type, etc.) diff --git a/server/routes.ts b/server/routes.ts index 803b551..6fd9e30 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -1385,11 +1385,32 @@ export async function registerRoutes(app: Express): Promise { }; // Check if user has access to the group + console.log('🔍 CUSTOMER ORDER PERMISSION DEBUG:', { + userRole: user.role, + userId: user.id, + userGroups: user.userGroups, + requestedGroupId: data.groupId, + requestedGroupIdType: typeof data.groupId + }); + if (user.role !== 'admin') { - const userGroupIds = user.userGroups.map(ug => ug.groupId); + const userGroupIds = user.userGroups ? user.userGroups.map(ug => ug.groupId) : []; + console.log('🔍 CUSTOMER ORDER - User group IDs:', userGroupIds); + console.log('🔍 CUSTOMER ORDER - Requested group ID:', data.groupId); + + // Allow managers, directeurs, and employees to create orders in their assigned groups + if (!['manager', 'directeur', 'employee'].includes(user.role)) { + console.log('❌ CUSTOMER ORDER - Access denied: Invalid role for customer orders'); + return res.status(403).json({ message: "Insufficient permissions to create customer orders" }); + } + if (!userGroupIds.includes(data.groupId)) { + console.log('❌ CUSTOMER ORDER - Access denied: User not in requested group'); + console.log('🔍 Available groups:', userGroupIds, 'Requested:', data.groupId); return res.status(403).json({ message: "Access denied to this group" }); } + + console.log('✅ CUSTOMER ORDER - Permission granted for user role:', user.role); } const customerOrder = await storage.createCustomerOrder(data);