Files
craft2prints/src/app/contact/actions.ts
T

29 lines
940 B
TypeScript

'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');
}