"use server"; import { redirect } from "next/navigation"; import { createClient } from "@/lib/supabase/server"; import { LoginFormSchema, SignupFormSchema, type FormState, } from "@/lib/validations/auth"; export async function signup( _state: FormState, formData: FormData ): Promise { const validatedFields = SignupFormSchema.safeParse({ fullName: formData.get("fullName"), email: formData.get("email"), password: formData.get("password"), }); if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors }; } const { fullName, email, password } = validatedFields.data; const supabase = await createClient(); const { error } = await supabase.auth.signUp({ email, password, options: { data: { full_name: fullName } }, }); if (error) { return { message: error.message }; } redirect("/dashboard/my-needs"); } export async function login( _state: FormState, formData: FormData ): Promise { const validatedFields = LoginFormSchema.safeParse({ email: formData.get("email"), password: formData.get("password"), }); if (!validatedFields.success) { return { errors: validatedFields.error.flatten().fieldErrors }; } const { email, password } = validatedFields.data; const supabase = await createClient(); const { error } = await supabase.auth.signInWithPassword({ email, password, }); if (error) { return { message: "Email ou mot de passe incorrect." }; } redirect("/dashboard/my-needs"); } export async function logout() { const supabase = await createClient(); await supabase.auth.signOut(); redirect("/auth/login"); }