Fix portal account creation and improve email handling
All checks were successful
Build And Push Image / docker (push) Successful in 2m56s
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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user