import { API_URL } from '$env/static/private'; import { fail, redirect, type Actions } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import { zod } from 'sveltekit-superforms/adapters'; import { superValidate } from 'sveltekit-superforms/server'; import { z } from 'zod'; const settingSchema = z.object({ firstname: z.string().min(1, { message: "Prénom requis" }), lastname: z.string().min(1, { message: "Nom requis" }), pseudo: z.string().min(1, { message: "Nom d'utilisateur requi" }), }); export const load = (async ({ locals: { user } }) => { if (!user) redirect(302, '/login'); const form = await superValidate(user, zod(settingSchema)); return { title: 'Paramètres', form }; }) satisfies PageServerLoad; export const actions = { default: async ({ request, cookies }) => { const session = cookies.get('session'); const form = await superValidate(request, zod(settingSchema)); if (!form.valid) { return fail(400, { form }); } const res = await fetch(`${API_URL}/user/settings`, { method: 'POST', headers: { Authorization: `Bearer ${session}` }, body: JSON.stringify(form.data) }); if (res.ok) { return { success: true }; } if (res.status === 400) { form.errors.pseudo = ['Le pseudo est déjà utilisé']; return fail(400, { form }); } return fail(500, { form }); } } satisfies Actions;