From 4247e2d21815b4c11bf5b38d610b8e42757f9cf0 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 3 Sep 2025 12:38:37 +0000 Subject: [PATCH] Improve webhook request handling and error logging for admin tasks Enhance the webhook route to improve user authentication checks, add robust error handling for form-data imports and fetch requests, and implement detailed logging for debugging webhook interactions. Replit-Commit-Author: Agent Replit-Commit-Session-Id: cfbfe47c-0c9a-4ebf-8a41-2937407eccff Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/cfbfe47c-0c9a-4ebf-8a41-2937407eccff/DIlaeG2 --- .replit | 2 +- ...-4352-B996-E355123E6F06}_1756903028538.png | Bin 0 -> 51350 bytes server/routes.ts | 45 ++++++++++++++++-- 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 attached_assets/{1E5471F2-4657-4352-B996-E355123E6F06}_1756903028538.png diff --git a/.replit b/.replit index baa3edd..2e1a3ae 100644 --- a/.replit +++ b/.replit @@ -37,4 +37,4 @@ args = "npm run dev" waitForPort = 5000 [agent] -integrations = ["javascript_object_storage==1.0.0", "javascript_log_in_with_replit==1.0.0", "javascript_database==1.0.0"] +integrations = ["javascript_object_storage==1.0.0", "javascript_database==1.0.0", "javascript_log_in_with_replit==1.0.0"] diff --git a/attached_assets/{1E5471F2-4657-4352-B996-E355123E6F06}_1756903028538.png b/attached_assets/{1E5471F2-4657-4352-B996-E355123E6F06}_1756903028538.png new file mode 100644 index 0000000000000000000000000000000000000000..6effc1f0392a9a1db56d443d627a3580191e72f3 GIT binary patch literal 51350 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 { // Route BAP pour envoi webhook n8n app.post('/api/bap/send-webhook', isAuthenticated, async (req: any, res) => { try { + console.log('🔍 BAP: RequĂȘte reçue', { + hasUser: !!req.user, + userType: typeof req.user, + hasClaims: !!(req.user?.claims), + hasId: !!(req.user?.id), + bodyKeys: Object.keys(req.body || {}) + }); + // VĂ©rifier que l'utilisateur est admin - const user = await storage.getUser(req.user.claims ? req.user.claims.sub : req.user.id); + const userId = req.user?.claims?.sub || req.user?.id; + console.log('🔍 BAP: User ID extracted:', userId); + + if (!userId) { + console.error('❌ BAP: No user ID found'); + return res.status(401).json({ error: 'Utilisateur non authentifiĂ©' }); + } + + const user = await storage.getUser(userId); + console.log('🔍 BAP: User found:', { id: user?.id, role: user?.role }); + if (!user || user.role !== 'admin') { + console.error('❌ BAP: Access denied', { user: user?.role }); return res.status(403).json({ error: 'AccĂšs refusĂ© - Admin uniquement' }); } @@ -110,13 +129,23 @@ export async function registerRoutes(app: Express): Promise { }); // CrĂ©er FormData pour l'envoi vers n8n - const FormData = (await import('form-data')).default; + let FormData; + try { + FormData = (await import('form-data')).default; + console.log('✅ BAP: form-data imported successfully'); + } catch (error) { + console.error('❌ BAP: Erreur import form-data:', error); + return res.status(500).json({ error: 'Erreur configuration serveur (form-data)' }); + } + const formData = new FormData(); formData.append('pdf', fileBuffer, { filename: fileName, contentType: 'application/pdf' }); formData.append('recipient', recipient); + + console.log('✅ BAP: FormData créé avec succĂšs'); // Envoyer vers le webhook n8n const webhookUrl = 'https://workflow.ffnancy.fr/webhook/a3d03176-b72f-412d-8fb9-f920b9fbab4d'; @@ -124,6 +153,8 @@ export async function registerRoutes(app: Express): Promise { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), 60000); // 60 secondes + console.log('🌐 BAP: Envoi vers webhook n8n...'); + const response = await fetch(webhookUrl, { method: 'POST', body: formData, @@ -132,8 +163,12 @@ export async function registerRoutes(app: Express): Promise { }); clearTimeout(timeoutId); + + console.log('🌐 BAP: RĂ©ponse webhook reçue', { status: response.status, ok: response.ok }); if (!response.ok) { + const errorText = await response.text(); + console.error('❌ BAP: Erreur webhook', { status: response.status, errorText }); throw new Error(`Erreur webhook: ${response.status} ${response.statusText}`); } @@ -148,7 +183,11 @@ export async function registerRoutes(app: Express): Promise { }); } catch (error: any) { - console.error('❌ BAP: Erreur envoi webhook n8n:', error); + console.error('❌ BAP: Erreur complĂšte:', { + name: error.name, + message: error.message, + stack: error.stack?.substring(0, 500) + }); let errorMessage = 'Erreur lors de l\'envoi du fichier'; if (error.name === 'AbortError') {