diff --git a/debug-employee-dlc-production.js b/debug-employee-dlc-production.js new file mode 100644 index 0000000..0da311c --- /dev/null +++ b/debug-employee-dlc-production.js @@ -0,0 +1,57 @@ +#!/usr/bin/env node + +/** + * Instructions de debug pour le problème DLC employé en production + */ + +console.log('🔍 Debug DLC Employé - Instructions Production'); +console.log('='.repeat(50)); + +console.log(` +ÉTAPES DE DIAGNOSTIC: + +1. 🔍 TESTER CRÉATION DLC EMPLOYÉ: + - Se connecter en tant qu'employé + - Créer une DLC + - Regarder les logs serveur pour: + "🔍 Creating DLC product - no role restrictions:" + - Noter le requestGroupId et userGroups dans les logs + +2. 🔍 TESTER RÉCUPÉRATION DLC EMPLOYÉ: + - Immédiatement après création, aller sur la page DLC + - Regarder les logs serveur pour: + "🔍 DLC Products API called with:" + - Comparer groupIds utilisateur vs groupId de la DLC créée + +3. 🔍 VÉRIFIER ASSIGNATION GROUPES: + - Si userGroups est vide ou ne contient pas le bon groupId + - L'employé n'est pas assigné au bon groupe dans user_groups + +4. 🔍 TESTS À FAIRE: + + Test A - Créer DLC: + POST /api/dlc-products avec groupId=1 + -> Vérifier le log "🔍 Creating DLC product" + -> Noter requestGroupId et userGroups + + Test B - Lister DLC: + GET /api/dlc-products + -> Vérifier le log "🔍 DLC Products API called with" + -> Comparer groupIds filtrés vs groupId de création + +5. 🔍 SOLUTION PROBABLE: + - Si userGroups ne contient pas le requestGroupId + - Ajouter l'employé au bon groupe dans la table user_groups + - Ou modifier le frontend pour utiliser le bon groupId + +LOGS À RECHERCHER: +- "🔍 Creating DLC product - no role restrictions:" +- "🔍 DLC Products API called with:" +- "📋 DLC Products returned:" +- "📋 Sample DLC products groupIds:" +`); + +console.log('\n🔧 Tests de validation rapides en production:'); +console.log('1. Vérifier les groupes assignés à l\'employé'); +console.log('2. Vérifier que la DLC est créée avec le bon groupId'); +console.log('3. Vérifier que le filtre groupIds inclut ce groupId'); \ No newline at end of file diff --git a/server/routes.ts b/server/routes.ts index b71d0ac..600961f 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -2219,11 +2219,13 @@ RÉSUMÉ DU SCAN if (status) filters.status = status; if (supplierId) filters.supplierId = parseInt(supplierId); - console.log('DLC Products API called with:', { + console.log('🔍 DLC Products API called with:', { userId, userRole: user.role, + userGroups: user.userGroups?.map(ug => ({groupId: ug.group.id, groupName: ug.group.name})), groupIds: user.role === 'admin' && !req.query.storeId ? 'all' : groupIds, - filters + filters, + queryStoreId: req.query.storeId }); const dlcProducts = await storage.getDlcProducts( @@ -2231,7 +2233,10 @@ RÉSUMÉ DU SCAN filters ); - console.log('DLC Products returned:', dlcProducts.length, 'items'); + console.log('📋 DLC Products returned:', dlcProducts.length, 'items'); + if (dlcProducts.length > 0) { + console.log('📋 Sample DLC products groupIds:', dlcProducts.slice(0, 3).map(p => ({id: p.id, name: p.productName, groupId: p.groupId}))); + } res.json(dlcProducts); } catch (error) { console.error("Error fetching DLC products:", error); @@ -2307,7 +2312,12 @@ RÉSUMÉ DU SCAN } // REMOVED: All role restrictions - tous les rôles peuvent créer des DLC - console.log("Creating DLC product - no role restrictions:", { userId, userRole: user.role, groupId: req.body.groupId }); + console.log("🔍 Creating DLC product - no role restrictions:", { + userId, + userRole: user.role, + requestGroupId: req.body.groupId, + userGroups: user.userGroups?.map(ug => ({groupId: ug.group.id, groupName: ug.group.name})) + }); const validatedData = insertDlcProductFrontendSchema.parse({ ...req.body, @@ -2315,7 +2325,12 @@ RÉSUMÉ DU SCAN }); const dlcProduct = await storage.createDlcProduct(validatedData); - console.log('✅ DLC Product created successfully:', dlcProduct.id); + console.log('✅ DLC Product created successfully:', { + id: dlcProduct.id, + productName: dlcProduct.productName, + groupId: dlcProduct.groupId, + createdBy: dlcProduct.createdBy + }); res.status(201).json(dlcProduct); } catch (error) {