aboutsummaryrefslogtreecommitdiffstats
path: root/website/src/routes/welcome/+page.server.ts
blob: 503f3616d866564334a07264e1d128bc310761b0 (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
import { fail, redirect } from '@sveltejs/kit';
import type { Actions, PageServerLoad } from './$types';
import { profileSchema } from '$lib/schemas/profile';

export const actions: Actions = {
	default: async ({ request, fetch }) => {
        console.log("hello");
		const formData = await request.formData();
		const data = Object.fromEntries(formData);

		// 1. Zod Validation
		const result = profileSchema.safeParse(data);
		
		if (!result.success) {
			return fail(400, {
				errors: result.error.flatten().fieldErrors,
				data: data as Record<string, string>
			});
		}

		// 2. Example: Check availability against your backend
		// Replace this with your actual backend URL
		const response = await fetch(`/api/check-username?u=${result.data.username}`);
		const { available } = await response.json();

		if (!available) {
			return fail(400, {
				errors: { username: ["This username is already taken"] },
				data: data as Record<string, string>
			});
		}

		// 3. Success: Send to backend to create profile
		// await fetch('...', { method: 'POST', body: JSON.stringify(result.data) });

		throw redirect(303, '/dashboard');
	}
};