Configurar Supabase Auth con email y contraseña
Clase 6 de 17 • Curso de Supabase Avanzado
Contenido del curso
Autenticación
CRUD de la aplicación
Seguridad avanzada
Dashboard con Supabase Realtime
Emails y Resend para Suplatzigram
MCP y Edge Functions
Suplatsigram deja de ser totalmente pública y pasa a identificar usuarios con Supabase Auth. Aquí verás cómo activar el flujo clásico de email y contraseña, preparar registro y inicio de sesión, y aplicar validaciones básicas para evitar correos o contraseñas inválidas. Además, aprenderás a enriquecer al usuario con metadata como username y rol, y a reconocer opciones clave del dashboard de Supabase.
¿Cómo activar Supabase Auth y qué opciones clave configurar?
Configura la autenticación desde el apartado de authentication en el dashboard. Puedes crear usuarios por invitación (envía email para aceptar) o registrarlos directamente con correo y contraseña. Si marcas la autoconfirmación, no se enviará correo de verificación.
- Permitir registro de nuevos usuarios. Activar o desactivar según necesidad.
- Permitir link manual para el proyecto. Útil para flujos personalizados.
- Permitir logueos anónimos. Opción para pruebas o accesos limitados.
- Enviar email de confirmación al registrarse. Recomendado si no usas autoconfirmación.
- Proveedores de login: email, teléfono y sociales (Apple, Azure, etc.). Requiere configurar cada provider.
- Políticas de seguridad: manejo de role level security por tabla. Se trabajará más adelante.
Ejemplo práctico: al crear un usuario de prueba en el panel con autoconfirmación, podrás iniciar sesión de inmediato con ese correo y contraseña, y verás datos como ID, email, fecha de creación, último acceso y si el email está verificado.
¿Cómo se implementa el flujo de registro con validaciones y metadata?
Desde la interfaz, el registro solicita username, email y contraseña. Si no hay autoconfirmación, se envía un correo para validar la cuenta y se muestra el mensaje «Registro exitoso. Revisa tu correo electrónico para confirmar tu cuenta».
¿Qué validaciones básicas aplicar?
- Verificar que las contraseñas existan y coincidan.
- Validar formato del email.
- Comprobar que el username sea único: si no existe, se devuelve un 404 como señal de que puede usarse.
¿Cómo registrar desde la interfaz y confirmar el email?
- Completar username, email y contraseña.
- Enviar el registro a Supabase.
- Recibir el correo de confirmación por defecto de Supabase y confirmar con el enlace.
- Ser redirigido a la aplicación local en localhost:3000.
¿Qué es la metadata del usuario y para qué sirve?
La metadata permite adjuntar datos personalizados como username y rol. Si registras desde el dashboard, lo habitual es obtener solo provider y email verificado. Si registras desde el cliente, puedes incluir campos extra para identificar mejor a cada usuario.
Ejemplo (pseudocódigo del registro):
// handleSubmit (registro)
if (!password || password !== repeatPassword) return mostrarError('Contraseña inválida.');
const disponible = await verificarUsername(username); // 404 si no existe, permitido.
if (!disponible) return mostrarError('El usuario ya existe.');
const { error } = await supabase.auth.registrar({
email,
password,
options: {
data: { username, rol }
}
});
if (error) return mostrarError(error.message);
mostrarMensaje('Registro exitoso. Revisa tu correo para confirmar tu cuenta.');
¿Cómo funciona el inicio de sesión y la lectura de datos?
El login con contraseña requiere los campos email y password. Tras autenticarse, puedes leer los datos del usuario y su metadata para mostrarlos o guardarlos.
¿Qué parámetros requiere el login con password?
- email: correo registrado.
- password: contraseña asociada.
¿Qué datos devuelve Supabase tras iniciar sesión?
- Estado del email: verificado o no.
- Identificadores: ID del usuario, proveedor, último acceso.
- Campos por defecto: email, teléfono (vacío si no se usa).
- Metadata: por ejemplo, username y rol cuando se agregó desde el cliente.
Ejemplo (pseudocódigo del login):
// handleSubmit (login)
const { error, user } = await supabase.auth.loginConPassword({ email, password });
if (error) return mostrarError(error.message);
const meta = user.user_metadata; // username, rol, etc.
console.log('Usuario logueado:', user);
console.log('Metadata:', meta);
mostrarMensaje('Inicio de sesión exitoso.');
Habilidades y conceptos reforzados: - Configuración de Supabase Auth en dashboard y cliente. - Flujo de registro con verificación por correo y autoconfirmación. - Validaciones: contraseñas, formato de email y unicidad de username con 404. - Manejo de metadata para enriquecer el perfil (username, rol). - Conocimiento de providers y opciones de login (email, teléfono, sociales). - Introducción a role level security para proteger tablas por usuario.
¿Quieres que revisemos tus validaciones o la estructura de tu metadata? Cuéntame qué campo personalizado necesitas y lo vemos paso a paso.