"use server"; import { createClient } from "@/lib/supabase/server"; import { redirect } from "next/navigation"; export async function signIn(prevState: any, formData: FormData) { const email = formData.get("email") as string; const password = formData.get("password") as string; const returnUrl = formData.get("returnUrl") as string | undefined; if (!email || !email.includes('@')) { return { message: "Please enter a valid email address" }; } if (!password || password.length < 6) { return { message: "Password must be at least 6 characters" }; } const supabase = await createClient(); const { error } = await supabase.auth.signInWithPassword({ email, password }); if (error) { return { message: error.message || "Could not authenticate user" }; } return redirect(returnUrl || "/dashboard"); } export async function signUp(prevState: any, formData: FormData) { const origin = formData.get("origin") as string; const email = formData.get("email") as string; const password = formData.get("password") as string; const confirmPassword = formData.get("confirmPassword") as string; const returnUrl = formData.get("returnUrl") as string | undefined; if (!email || !email.includes('@')) { return { message: "Please enter a valid email address" }; } if (!password || password.length < 6) { return { message: "Password must be at least 6 characters" }; } if (password !== confirmPassword) { return { message: "Passwords do not match" }; } const supabase = await createClient(); const { error } = await supabase.auth.signUp({ email, password, options: { emailRedirectTo: `${origin}/auth/callback?returnUrl=${returnUrl}`, }, }); if (error) { return { message: error.message || "Could not create account" }; } // Try to sign in immediately const { error: signInError } = await supabase.auth.signInWithPassword({ email, password }); if (signInError) { return { message: "Account created! Check your email to confirm your registration." }; } return redirect(returnUrl || "/dashboard"); } export async function forgotPassword(prevState: any, formData: FormData) { const email = formData.get("email") as string; const origin = formData.get("origin") as string; if (!email || !email.includes('@')) { return { message: "Please enter a valid email address" }; } const supabase = await createClient(); const { error } = await supabase.auth.resetPasswordForEmail(email, { redirectTo: `${origin}/auth/reset-password`, }); if (error) { return { message: error.message || "Could not send password reset email" }; } return { success: true, message: "Check your email for a password reset link" }; } export async function resetPassword(prevState: any, formData: FormData) { const password = formData.get("password") as string; const confirmPassword = formData.get("confirmPassword") as string; if (!password || password.length < 6) { return { message: "Password must be at least 6 characters" }; } if (password !== confirmPassword) { return { message: "Passwords do not match" }; } const supabase = await createClient(); const { error } = await supabase.auth.updateUser({ password }); if (error) { return { message: error.message || "Could not update password" }; } return { success: true, message: "Password updated successfully" }; } export async function signOut() { const supabase = await createClient(); const { error } = await supabase.auth.signOut(); if (error) { return { message: error.message || "Could not sign out" }; } return redirect("/"); }