Docs/Feature
// feature
Autenticazione (Supabase)
L'auth in ZeroToShip è cablata con Supabase e supporta due metodi già pronti: magic link via email e Google OAuth. Nessun JWT da gestire a mano, nessun middleware da scrivere da zero — se hai messo le chiavi giuste in .env.local, funziona.
I due helper Supabase
Trovi due client tipizzati in libs/supabase/: client.ts per il browser e server.ts per i Server Components, le Server Actions e le route handler. Usi sempre quello giusto in base al contesto.
import { createClient } from "@/libs/supabase/server";
const supabase = await createClient();
const { data: { user } } = await supabase.auth.getUser();Il callback OAuth
Sia il magic link che Google OAuth reindirizzano a /api/auth/callback. Quella route handler scambia il code per una sessione e ti manda su config.auth.callbackUrl (di default /dashboard). Non devi toccarla, è già lì.
Proteggere una rotta
Dentro un Server Component controlli l'utente e reindirizzi se non è loggato:
import { redirect } from "next/navigation";
import { createClient } from "@/libs/supabase/server";
export default async function Dashboard() {
const supabase = await createClient();
const { data: { user } } = await supabase.auth.getUser();
if (!user) redirect("/signin");
return <p>Benvenuto {user.email}</p>;
}C'è anche un middleware in libs/supabase/middleware.ts che fa refresh della sessione a ogni richiesta — non ti ricordi mai più di rinnovare i token a mano.
Vuoi il tutorial passo-passo con Google OAuth attivato da zero? Vai a Aggiungere il login.