Skip to content

Creating a new member #489

@JacobWeinbren

Description

@JacobWeinbren

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

  1. Set up a Ghost Admin API instance with the necessary configuration (URL, key, version).
  2. 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.
  3. 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 }
		);
	}
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions