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.
This commit is contained in:
Torsten Schulz (local)
2025-11-06 07:29:49 +01:00
parent a0d12a895e
commit d0a8ef5ff2

View File

@@ -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();