Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating a new member #489

Open
JacobWeinbren opened this issue Feb 8, 2024 · 2 comments
Open

Creating a new member #489

JacobWeinbren opened this issue Feb 8, 2024 · 2 comments

Comments

@JacobWeinbren
Copy link

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 }
		);
	}
};
@Tanu1201
Copy link

Hey, can I take this up?

@chriseaton
Copy link

I noticed a similar problem - the read operation on members shows in source you can lookup a member by e-mail, but attempting to do so results in a "Resource not found" error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants