debug: add comprehensive logging to membership linking feature

- Added detailed error logging to link_membership_user processor
- Added error handling for database operations in processor
- Added comprehensive logging to linkSecondaryUserToMembership function
- Logs now show: CSRF validation, database operations, link creation, permission grants
- Improved error messages for debugging
This commit is contained in:
twotalesanimation
2025-12-05 11:22:38 +02:00
parent 886bdc5db8
commit 619ad0b320
4 changed files with 414 additions and 237 deletions

View File

@@ -2924,17 +2924,25 @@ function linkSecondaryUserToMembership($primary_user_id, $secondary_user_id, $re
$conn = openDatabaseConnection();
if ($conn === null) {
error_log("linkSecondaryUserToMembership: Database connection failed");
return ['success' => false, 'message' => 'Database connection failed'];
}
error_log("linkSecondaryUserToMembership: primary=$primary_user_id, secondary=$secondary_user_id, relationship=$relationship");
// Validation: primary and secondary user IDs must be different
if ($primary_user_id === $secondary_user_id) {
error_log("linkSecondaryUserToMembership: Cannot link user to themselves");
return ['success' => false, 'message' => 'Cannot link user to themselves'];
}
// Validation: primary user must have active membership
if (!getUserMemberStatus($primary_user_id)) {
$memberStatus = getUserMemberStatus($primary_user_id);
error_log("linkSecondaryUserToMembership: Primary user member status = " . ($memberStatus ? 'true' : 'false'));
if (!$memberStatus) {
$conn->close();
error_log("linkSecondaryUserToMembership: Primary user does not have active membership");
return ['success' => false, 'message' => 'Primary user does not have active membership'];
}
@@ -2947,6 +2955,7 @@ function linkSecondaryUserToMembership($primary_user_id, $secondary_user_id, $re
if ($userResult->num_rows === 0) {
$conn->close();
error_log("linkSecondaryUserToMembership: Secondary user does not exist");
return ['success' => false, 'message' => 'Secondary user does not exist'];
}
@@ -2959,12 +2968,14 @@ function linkSecondaryUserToMembership($primary_user_id, $secondary_user_id, $re
if ($existingResult->num_rows > 0) {
$conn->close();
error_log("linkSecondaryUserToMembership: Users are already linked");
return ['success' => false, 'message' => 'Users are already linked'];
}
try {
// Start transaction
$conn->begin_transaction();
error_log("linkSecondaryUserToMembership: Starting transaction");
// Insert link
$insertLink = $conn->prepare("
@@ -2972,8 +2983,13 @@ function linkSecondaryUserToMembership($primary_user_id, $secondary_user_id, $re
VALUES (?, ?, ?, NOW(), NOW())
");
$insertLink->bind_param("iis", $primary_user_id, $secondary_user_id, $relationship);
$insertLink->execute();
if (!$insertLink->execute()) {
throw new Exception("Failed to insert link: " . $insertLink->error);
}
$linkId = $conn->insert_id;
error_log("linkSecondaryUserToMembership: Link created with ID = $linkId");
$insertLink->close();
// Grant default permissions to secondary user
@@ -2991,17 +3007,24 @@ function linkSecondaryUserToMembership($primary_user_id, $secondary_user_id, $re
VALUES (?, ?, NOW())
");
$insertPerm->bind_param("is", $linkId, $permission);
$insertPerm->execute();
if (!$insertPerm->execute()) {
throw new Exception("Failed to insert permission: " . $insertPerm->error);
}
error_log("linkSecondaryUserToMembership: Permission '$permission' granted");
$insertPerm->close();
}
// Commit transaction
$conn->commit();
error_log("linkSecondaryUserToMembership: Transaction committed successfully");
$conn->close();
return ['success' => true, 'message' => 'User successfully linked to membership', 'link_id' => $linkId];
} catch (Exception $e) {
error_log("linkSecondaryUserToMembership: Exception - " . $e->getMessage());
$conn->rollback();
$conn->close();
return ['success' => false, 'message' => 'Failed to create link: ' . $e->getMessage()];
@@ -3157,3 +3180,4 @@ function unlinkSecondaryUser($link_id, $primary_user_id)
return ['success' => false, 'message' => 'Failed to remove link: ' . $e->getMessage()];
}
}