Initial commit: Craft2Prints with Stages 1-3
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
'use server';
|
||||
|
||||
import { headers } from 'next/headers';
|
||||
import { redirect } from 'next/navigation';
|
||||
import { sendContactMessageNotification } from '@/lib/mail';
|
||||
import { verifyTurnstileToken } from '@/lib/turnstile';
|
||||
import { getClientIp } from '@/lib/rateLimit';
|
||||
|
||||
export async function sendContactMessage(formData: FormData) {
|
||||
const name = String(formData.get('name') ?? '').trim();
|
||||
const email = String(formData.get('email') ?? '').trim();
|
||||
const message = String(formData.get('message') ?? '').trim();
|
||||
|
||||
if (!name || !email || !message) {
|
||||
redirect('/contact?error=missing');
|
||||
}
|
||||
|
||||
const ip = getClientIp(headers());
|
||||
const turnstileToken = String(formData.get('cf-turnstile-response') ?? '');
|
||||
const { success } = await verifyTurnstileToken(turnstileToken, ip);
|
||||
if (!success) {
|
||||
redirect('/contact?error=captcha');
|
||||
}
|
||||
|
||||
await sendContactMessageNotification({ name, email, message });
|
||||
|
||||
redirect('/contact?sent=1');
|
||||
}
|
||||
Reference in New Issue
Block a user