From d0a8ef5ff2368d66c60d984bf2e732e03b35f0f2 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 6 Nov 2025 07:29:49 +0100 Subject: [PATCH] Enhance MemberTransferService with detailed debug logging for login credentials Added comprehensive debug logging to the MemberTransferService to track login credentials and endpoint details during member transfers. Implemented checks for the presence of login credentials, including mapping username to email when necessary, and improved error handling for missing credentials. This enhancement aims to facilitate troubleshooting and improve the overall robustness of the login process. --- backend/services/memberTransferService.js | 46 +++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/backend/services/memberTransferService.js b/backend/services/memberTransferService.js index 42b9400..f5e7207 100644 --- a/backend/services/memberTransferService.js +++ b/backend/services/memberTransferService.js @@ -165,6 +165,37 @@ class MemberTransferService { } } + // Debug-Logging für Login-Credentials + if (loginEndpointUrl) { + if (loginCredentials && Object.keys(loginCredentials).length > 0) { + devLog('[transferMembers] Login-Credentials gefunden:', Object.keys(loginCredentials)); + // Logge nur die Keys, nicht die Werte (Sicherheit) + devLog('[transferMembers] Login-Endpoint:', loginEndpointUrl); + devLog('[transferMembers] Login-Format:', config.loginFormat || 'json'); + + // Mapping: Wenn "username" vorhanden ist, aber kein "email", verwende "username" als "email" + // Viele APIs erwarten "email" statt "username" + if (loginCredentials.username && !loginCredentials.email) { + devLog('[transferMembers] Mappe "username" zu "email" für Login'); + loginCredentials.email = loginCredentials.username; + // Entferne username, falls email erwartet wird + // delete loginCredentials.username; // Auskommentiert, falls beide benötigt werden + } + } else { + devLog('[transferMembers] WARNUNG: Keine Login-Credentials gefunden!'); + devLog('[transferMembers] loginEndpointUrl:', loginEndpointUrl); + devLog('[transferMembers] config.loginEndpoint:', config.loginEndpoint); + devLog('[transferMembers] savedConfig vorhanden:', !!savedConfig); + if (savedConfig) { + const savedCreds = savedConfig.getLoginCredentials(); + devLog('[transferMembers] Gespeicherte Credentials vorhanden:', !!savedCreds && Object.keys(savedCreds).length > 0); + if (savedCreds) { + devLog('[transferMembers] Gespeicherte Credential-Keys:', Object.keys(savedCreds)); + } + } + } + } + if (loginEndpointUrl && loginCredentials && Object.keys(loginCredentials).length > 0) { try { const loginResult = await this.performLogin( @@ -411,6 +442,20 @@ class MemberTransferService { */ async performLogin(endpoint, format, credentials) { try { + // Debug-Logging + devLog('[performLogin] Endpoint:', endpoint); + devLog('[performLogin] Format:', format); + devLog('[performLogin] Credential-Keys:', Object.keys(credentials || {})); + devLog('[performLogin] Credentials vorhanden:', !!(credentials && Object.keys(credentials).length > 0)); + + if (!credentials || Object.keys(credentials).length === 0) { + return { + success: false, + error: 'Keine Login-Credentials übergeben', + statusCode: 400 + }; + } + let requestConfig = { url: endpoint, method: 'POST', @@ -425,6 +470,7 @@ class MemberTransferService { 'Content-Type': 'application/json' }; requestConfig.data = credentials; + devLog('[performLogin] Sende JSON-Daten:', JSON.stringify(credentials, null, 2).replace(/("password"[^,}]*")([^"]*)(")/g, '$1***$3')); } else if (format === 'form-data' || format === 'multipart/form-data') { const FormData = (await import('form-data')).default; const formData = new FormData();