Contenido del curso

Roles de admin en Lovable y Supabase

Resumen

¿Quieres que solo algunos usuarios accedan al panel administrativo de tu app? El acceso basado en roles en Lovable y Supabase te permite asignar permisos diferenciados, proteger datos sensibles y construir secciones exclusivas para administradores sin escribir código complejo. Es ideal para builders que ya manejan autenticación básica y quieren escalar la seguridad de su aplicación.

Por qué conviene un sistema basado en roles en tu aplicación

Un sistema basado en roles separa lo que cada usuario puede hacer dentro de tu app. En el ejemplo de la clase, una aplicación para renombrar fotos necesitaba un panel de control visible solo para administradores, con métricas y lista de usuarios activos.

La idea central es simple: defines roles en una tabla y asignas usuarios a esos roles. A partir de ahí, la interfaz y la base de datos responden distinto según quién esté autenticado.

¿Qué es el acceso basado en roles? Es un modelo de seguridad donde asignas permisos a roles (como admin o user) y luego vinculas usuarios a esos roles. Así controlas qué puede ver, crear o editar cada persona.

Cómo se configura un rol de administrador y un rol de usuario

En Lovable puedes pedir el cambio directamente con edición directa, no en modo chat. Una instrucción como "añade un rol de usuario normal y un rol de administrador" basta para que la plataforma genere la infraestructura necesaria [01:05].

Lovable hace dos cosas clave:

  • Crea una tabla segura llamada userRoles asociada al ID de cada usuario.
  • Sustituye la función de alta para que cada nuevo registro reciba el rol user por defecto.

Antes de aprobar los cambios, revisa siempre qué está modificando Lovable en tu base de datos. La seguridad empieza por entender lo que se ejecuta detrás del prompt.

Por qué usar una tabla userRoles y no la tabla de perfiles

Meter el rol directamente en la tabla de perfiles es un riesgo. Si el usuario tiene permisos de update sobre su propio perfil, podría enviar código malicioso y ascenderse a administrador por su cuenta [03:20].

Una tabla userRoles separada cambia las reglas: el usuario solo puede leer su rol, nunca editarlo. Esa separación es la diferencia entre una app segura y una vulnerable.

Cómo asignar el rol de administrador a tu cuenta

Una vez creada la tabla, abres userRoles en Supabase, insertas una nueva fila y seleccionas tu ID de usuario con el botón Select record. Ahí eliges el correo correcto y asignas el rol admin [02:45].

Desde ese momento, tu cuenta ya tiene privilegios elevados, pero todavía falta que la interfaz responda a ese cambio.

Cómo mostrar un botón de administrador solo a quienes tienen el rol

El siguiente paso es condicionar la UI al rol del usuario. Una instrucción útil para Lovable: "añade un botón en el encabezado del panel de control que solo puedan ver los administradores y que lleve al panel de administración".

Lovable agrega dos elementos visibles únicamente para admins:

  • Una insignia que indica el rol activo.
  • Un botón que abre el panel de administración.

Para comprobar que funciona, cambia tu rol en la tabla a user. Verás que la insignia se actualiza y el botón desaparece de inmediato. Vuelve a admin y todo reaparece. Esa reactividad confirma que el sistema lee el rol en tiempo real.

¿Cómo verifico que mi sistema de roles funciona? Cambia tu rol en la tabla userRoles entre admin y user, y observa si la interfaz oculta o muestra los elementos restringidos. Si responde al instante, está bien conectado.

Cómo configurar RLS para que los administradores vean datos de usuarios

Al entrar al panel de administración, es probable que la lista de usuarios aparezca vacía. Eso ocurre porque la tabla de perfiles tiene Row Level Security activo y todavía no autoriza a los admins a leer registros ajenos.

La solución es pedir a Lovable: "asegúrate de que la tabla de perfiles tenga RLS para los administradores, de modo que puedan realizar operaciones CRUD". Lovable genera las consultas SQL necesarias y, tras ejecutarlas, los datos aparecen [05:30].

Qué significa CRUD en este contexto

CRUD son las cuatro operaciones básicas sobre datos:

  • Create: insertar nuevos registros.
  • Read: leer información existente.
  • Update: modificar campos.
  • Delete: eliminar filas.

Al darle CRUD a los administradores sobre la tabla de perfiles, puedes cambiar el rol de cualquier usuario desde la propia interfaz. Por ejemplo, ascender a otra cuenta a admin sin abrir Supabase.

¿Qué es RLS en Supabase? Row Level Security es una capa que define qué filas puede ver o modificar cada usuario según su identidad o rol. Sin RLS bien configurado, cualquier persona autenticada podría leer toda la base.

Qué puedes construir encima de tu sistema de roles

Con la base lista, el panel de administración admite cualquier funcionalidad que imagines: estadísticas de uso, gestión de usuarios, métricas de negocio, moderación de contenido o configuraciones globales.

La lógica siempre es la misma: defines el rol, proteges la tabla con RLS y condicionas la interfaz. A partir de ahí, lo que muestre tu panel depende de lo que tu producto necesite.

¿Qué función te gustaría darle a tu rol de administrador? Cuéntame en los comentarios cómo lo estás aplicando en tu propia app.