Fix portal account creation and improve email handling
All checks were successful
Build And Push Image / docker (push) Successful in 2m56s

- Add explicit POST method to portal account creation API call
- Improve error handling with specific messages for different failure cases
- Remove SMTP verification step that was causing issues with some servers
- Make email sending non-critical to portal account creation success
- Add better response data handling for keycloak_id
- Add integration review documentation
This commit is contained in:
2025-08-09 16:13:52 +02:00
parent 8d872f9a04
commit c4a0230f42
5 changed files with 338 additions and 27 deletions

View File

@@ -507,23 +507,41 @@ const createPortalAccount = async (member: Member) => {
creatingPortalAccountIds.value.push(member.Id);
try {
const response = await $fetch(`/api/members/${member.Id}/create-portal-account`) as any;
const response = await $fetch<any>(`/api/members/${member.Id}/create-portal-account`, {
method: 'POST'
});
if (response?.success) {
// Update the member in the local array to reflect the new keycloak_id
const index = members.value.findIndex(m => m.Id === member.Id);
if (index !== -1) {
members.value[index] = { ...members.value[index], keycloak_id: response.keycloak_id };
// Get keycloak_id from response.data
members.value[index] = { ...members.value[index], keycloak_id: response.data?.keycloak_id };
}
showSuccess.value = true;
successMessage.value = `Portal account created successfully for ${member.FullName}. They will receive an email with login instructions.`;
successMessage.value = response.message || `Portal account created successfully for ${member.FullName}.`;
} else {
throw new Error(response?.message || 'Failed to create portal account');
}
} catch (err: any) {
console.error('Error creating portal account:', err);
error.value = err.data?.message || err.message || 'Failed to create portal account. Please try again.';
// Better error handling
let errorMessage = 'Failed to create portal account. Please try again.';
if (err.statusCode === 409) {
errorMessage = 'This member already has a portal account or a user with this email already exists.';
} else if (err.statusCode === 400) {
errorMessage = 'Member must have email, first name, and last name to create a portal account.';
} else if (err.data?.message) {
errorMessage = err.data.message;
} else if (err.message) {
errorMessage = err.message;
}
// Show error in snackbar
showSuccess.value = true; // Reuse success snackbar for errors
successMessage.value = errorMessage;
} finally {
// Remove from creating array
const index = creatingPortalAccountIds.value.indexOf(member.Id);