Buscar

Buscar en Kavel...

Menú de documentación

Autenticación

Autenticación de correo/contraseña y OAuth con sesiones, impulsada por Better Auth.

Qué obtienes

  • Registro e inicio de sesión con correo + contraseña y sesiones seguras basadas en cookies
  • Rutas listas: /sign-in, /sign-up, /forgot-password y /reset-password
  • Google y GitHub OAuth opcionales, se activan al añadir credenciales, se desactivan si faltan
  • Tablas de Drizzle para usuarios, sesiones y cuentas, más el middleware requireAuth para proteger procedimientos oRPC

Cómo funciona

Better Auth se configura en apps/api/src/lib/auth.ts y se monta en /api/auth/*. La app web se comunica con él mediante un cliente tipado. Protege cualquier procedimiento componiendo el middleware de autenticación:

ts
export const getProfile = protectedProcedure
  .handler(async ({ context }) => {
    // context.user is guaranteed to exist here
    return context.user;
  });

Proveedores OAuth

Define GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET o las variables GITHUB_* equivalentes en .dev.vars para activar un proveedor. Déjalas vacías para mantenerlo desactivado, o elimina el proveedor en src/lib/auth.ts.

Consejo

Con el módulo de correo instalado, los correos de verificación y restablecimiento de contraseña se conectan automáticamente. Sin él, esos flujos siguen funcionando con el token; simplemente no envían correo.

Configuración

bash
# generate a session secret
openssl rand -base64 32   # -> BETTER_AUTH_SECRET

# create the auth tables
cd apps/api && bun db:generate && bun db:migrate