-
-
Notifications
You must be signed in to change notification settings - Fork 79
Description
Issue Summary
When attempting to add a new member using the Ghost Admin API within an Astro project, I encounter a ValidationError indicating a validation failure for the "email" field, despite ensuring the email is correctly formatted and present in the request payload.
Steps to Reproduce
- Set up a Ghost Admin API instance with the necessary configuration (URL, key, version).
- Create an endpoint in an Astro project to handle member sign-up, which collects an email address from a form submission and attempts to add a new member using api.members.add.
- Submit a valid email address through the form to trigger the endpoint.
Expected result: The member should be added successfully, and a success response should be returned.
Actual result: The operation fails with a ValidationError, specifically mentioning a validation failure for the "email" field, despite the email being present and correctly formatted in the request.
Technical Details
Ghost Version: v5.47.0
This issue seems to suggest that there might be a problem with how the Ghost Admin API is handling or validating the email field in the request. I have verified that the email is correctly formatted and included in the request payload, suggesting the issue might lie within the API or its validation logic.
Code
export const POST = async ({ request }) => {
const formData = await request.formData();
const email = formData.get("email");
if (
!email ||
!email.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/)
) {
return new Response(
JSON.stringify({ message: "Invalid email address" }),
{ status: 400 }
);
}
try {
const response = await api.members.add({
members: [{ email }],
});
console.log("Member created:", response);
return new Response(
JSON.stringify({ message: "Member created successfully" }),
{ status: 200 }
);
} catch (error) {
console.error(error);
return new Response(
JSON.stringify({ message: "Error creating member" }),
{ status: 500 }
);
}
};