Resumen

Crear un perfil público de usuario en Supabase es clave para mostrar información visible y mantener la seguridad. Aquí se detalla cómo construir una tabla de profiles vinculada a Supabase Auth, separando lo técnico (email, ID) de lo social (username, avatar, biografía) para usarlo en el frontend.

¿Por qué separar autenticación de perfil en Supabase?

Separar las capas simplifica la arquitectura y reduce riesgos. La autenticación queda aislada, mientras el perfil público concentra los datos visibles que sí se exponen.

  • Autenticación y datos técnicos: manejados por Supabase Auth con IDs internos y email.
  • Perfil público y datos sociales: username, avatar URL y biografía para mostrar en la interfaz.
  • Más seguridad: ya no dependes de metadata pegada al usuario para lo visible.
  • Uso directo en frontend: la tabla profiles se consulta como perfil público de cada persona.

¿Cómo crear la tabla profiles con UUID y row-level security?

El diseño se hace desde el dashboard de Supabase, en el editor de tabla, agregando una nueva tabla llamada Profiles y manteniendo activa la row-level security.

  • Nombre y seguridad: crear Profiles y mantener row-level security activa.
  • ID como UUID: definir el ID como UUID, porque ese es el tipo que entrega el registro de autenticación, y marcarlo como clave primaria.
  • username: tipo texto, puede ser nulo, migrado desde la metadata para centralizar lo social en esta tabla.
  • avatar URL: tipo texto, para almacenar la URL de la imagen de perfil.
  • Guardar estructura: confirmar el esquema y preparar la relación con usuarios.

¿Cómo relacionar profiles con out users mediante foreign key?

Para asegurar integridad, se crea una foreign key entre la tabla pública profiles y la tabla privada users del esquema out.

  • Seleccionar tabla de referencia: cambiar el filtro para acceder a tablas no públicas y elegir users dentro de out.
  • Definir relación explícita: vincular public profiles ID con out users ID para enlazar cada perfil a su usuario autenticado.
  • Acciones por defecto: dejar las opciones en “no ejecutar acción” en actualizaciones o eliminaciones, según configuración indicada.
  • Guardar y crear: confirmar el diseño y crear la tabla con su clave foránea activa.

Con esto, el proyecto ya tiene una tabla profiles que complementa Supabase Out, lista para editar y mostrar el perfil: actualizar username, agregar biografía y cargar un avatar desde storage, construyendo una vista pública del perfil en la app.

¿Te gustaría ver más patrones de diseño de datos o reglas de seguridad para row-level security en este contexto? Deja tus preguntas o comentarios y cuéntame qué parte quieres profundizar.