ZeroToShip

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.

libs/supabase/server.ts
ts
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:

app/dashboard/page.tsx
tsx
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.