From ec072f54761aedd4067ffb89739f8e596282bcb6 Mon Sep 17 00:00:00 2001 From: Thomas Hintz Date: Wed, 12 Apr 2023 07:33:14 -0700 Subject: [PATCH] Adding support for patreon account creation. --- src/app/(main)/reactors/create-account/page.jsx | 11 ++++++----- src/pages/api/create-account.js | 9 +++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/app/(main)/reactors/create-account/page.jsx b/src/app/(main)/reactors/create-account/page.jsx index cd5eb10..ccda3b0 100644 --- a/src/app/(main)/reactors/create-account/page.jsx +++ b/src/app/(main)/reactors/create-account/page.jsx @@ -3,7 +3,6 @@ export const dynamic = 'force-dynamic'; import Link from 'next/link' import Stripe from 'stripe'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); -import { dbRun } from '@/db'; import { XCircleIcon } from '@heroicons/react/20/solid' @@ -15,12 +14,9 @@ export default async function Page({ searchParams }) { const unexpectedError = searchParams['unexpected_error']; const msg = searchParams['msg']; const csi = searchParams['csi']; + const patreonMagicKey = searchParams['patreon_magic_key']; const session = csi && await stripe.checkout.sessions.retrieve(csi); const email = (csi && session && session.customer_details.email) || searchParams['email']; - const message = searchParams['message']; - const submitted = email || message; - const valid = submitted && email && message; - let emailSentSuccessfully = false; if (unexpectedError) { return ( <> @@ -59,6 +55,11 @@ export default async function Page({ searchParams }) { value={csi} type="hidden" /> +
diff --git a/src/pages/api/create-account.js b/src/pages/api/create-account.js index c4f3cf5..e2112af 100644 --- a/src/pages/api/create-account.js +++ b/src/pages/api/create-account.js @@ -47,18 +47,19 @@ const createSubscription = async (userId) => { async function handler(req, res) { if (req.method === 'POST') { - const { email, password, passwordagain, csi } = req.body; + const { email, password, passwordagain, csi, patreon_magic_key } = req.body; // Validate email, password, and csi - if (email && password && password === passwordagain && csi) { + if (email && password && password === passwordagain && (csi || patreon_magic_key)) { // Check for minimum password length if (password.length < 12) { res.redirect(makeMsg(csi, email, 'Please enter a password that is at least 12 characters long.')); return; } - // Retrieve Stripe session and email - const session = csi && await stripe.checkout.sessions.retrieve(csi); + // Retrieve Stripe session and email or get verify patreon magic key + const session = (csi && await stripe.checkout.sessions.retrieve(csi)) || + (patreon_magic_key === process.env.PATREON_MAGIC_KEY ? { customer_details: { email } } : false); const emailFromSession = session && session.customer_details.email; // Validate session and email