summaryrefslogtreecommitdiff
path: root/src/routes/contact/submit.js
blob: 24f4559d3111b4124556290cecc87a73a54b9323 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import 'dotenv/config';
import { EnvMistyMountainsMailerFactory } from '$lib/utils';

export async function post({ request }) {
	const body = await request.json();
	const { HCAPTCHA_SECRET, FORM_TO_EMAIL } = process.env;
	const mailer = EnvMistyMountainsMailerFactory();

	const captchaVerified = await fetch(
		`https://hcaptcha.com/siteverify?response=${body.captchaToken}&secret=${HCAPTCHA_SECRET}`,
		{
			method: 'POST'
		}
	)
		.then((res) => res.json())
		.then((json) => json.success)
		.catch(() => false);

	if (!captchaVerified) {
		return {
			statusCode: 400,
			body: {
				error: 'Captcha verification failed'
			}
		};
	}

	const text = `Name: ${body.name}
Phone Number: ${body.phone || 'Not Given'}
Email: ${body.email}
Message: ${body.message}
`;

	const messageSent = await mailer
		.sendMail(FORM_TO_EMAIL, `Form Submission from ${body.name}`, text)
		.then(() => true)
		.catch((error) => {
			console.error(error);
			return false;
		});

	if (!messageSent) {
		return {
			statusCode: 500,
			body: {
				error: 'Message could not be sent'
			}
		};
	}

	return {
		body: {
			success: true
		}
	};
}