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