import { dev } from '$app/environment'; 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 { setError, superValidate } from 'sveltekit-superforms/server'; import { loginSchema } from '$lib/validations/auth'; export const load: PageServerLoad = async ({ locals: { user } }) => { if (user) redirect(302, '/'); const form = await superValidate(zod(loginSchema)); return { title: 'Connexion', form }; }; export const actions: Actions = { default: async ({ request, cookies, fetch }) => { const form = await superValidate(request, zod(loginSchema)); if (!form.valid) { return fail(400, { form }); } const res = await fetch(`${API_URL}/login`, { method: 'POST', body: JSON.stringify({ ...form.data }) }); if (!res.ok) { return setError(form, 'passwd', "Nom d'utilisateur ou mot de passe incorrect"); } const token = res.headers.get('Authorization')?.split('Bearer ').pop(); if (!token) { return setError(form, 'passwd', "Une erreur est survenue, veuillez réessayer plus tard"); } cookies.set('session', token, { path: '/', secure: !dev, sameSite: 'strict', }); redirect(302, '/'); } };