peer-at-code-web/src/routes/dashboard/settings/+page.server.ts
2024-02-26 11:57:17 +01:00

63 lines
1.3 KiB
TypeScript

import { API_URL } from '$env/static/private';
import { fail, 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({
required_error: 'Prénom manquant'
}),
lastname: z.string({
required_error: 'Nom manquant'
}),
pseudo: z.string({
required_error: 'Pseudo manquant'
})
});
export const load = (async ({ parent, locals: { user } }) => {
await parent();
const form = await superValidate(user, zod(settingSchema));
return {
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;