Supabase · RLS

¿Cómo compartir un solo proyecto con un invitado?

IndiePack··9 min lectura

Para compartir un solo proyecto con un invitado en Next.js y Supabase, crea una concesión ligada al identificador del proyecto y al usuario autenticado, con rol y estado propios. La política RLS debe aceptar al propietario por su membresía de organización o al invitado por esa concesión concreta, sin convertirlo en miembro de todos los proyectos.

Regla de alcance: una invitación a un proyecto no debe reutilizar el rol global de la organización; son permisos distintos y deben revocarse por separado.

Índice

  1. ¿Qué tablas separan membresía e invitación?
  2. ¿Cuál es la forma rápida con IndiePack?
  3. ¿Cómo se acepta la invitación de forma segura?
  4. ¿Cómo decide RLS qué puede ver el invitado?
  5. ¿Cómo se prueba y revoca el acceso?

¿Qué tablas separan la membresía normal del acceso invitado?

Las tablas deben separar organizaciones, proyectos, miembros de organización e invitados de proyecto. La concesión del invitado necesita proyecto, usuario cuando haya aceptado, rol limitado, estado, caducidad opcional y quién la creó.

Evita copiar datos del proyecto a una zona supuestamente pública. Un modelo explícito permite que comentarios, archivos o tareas consulten la misma concesión y que una revocación se aplique sin buscar enlaces dispersos.

¿Cuál es la forma rápida: construirlo sobre IndiePack?

La forma rápida es usar IndiePack como base de Next.js 15 y Supabase con PostgreSQL, autenticación social y reglas de seguridad preconfiguradas. Desde ahí añades el rol de invitado de tu producto sin reconstruir el recorrido completo de auth y datos.

Explorar IndiePackVer precio

¿Cómo se acepta la invitación sin usar el email como permiso?

La invitación se acepta autenticando primero a la persona y vinculando después su identificador de usuario a una concesión pendiente válida. El enlace enviado por email sirve para localizar y demostrar posesión temporal de la invitación, pero no debe autorizar consultas indefinidas.

Guarda el token de forma no reversible, aplica caducidad y marca una sola aceptación. Si la sesión pertenece a otra dirección, muestra una decisión clara en vez de enlazar silenciosamente la cuenta equivocada.

¿Cómo decide RLS qué filas puede leer o modificar el invitado?

RLS debe comprobar el proyecto de cada fila y buscar una concesión activa para el usuario actual con el nivel necesario. La escritura puede exigir un rol de editor, mientras que lectura y comentarios pueden admitir un rol más limitado.

No bases la política en un `project_id` recibido sin comprobar su relación con la fila. La guía de RLS multi-tenant con organizaciones explica la capa de propietario; el invitado añade una segunda vía explícita, no un atajo que omita el aislamiento.

¿Cómo se prueba y revoca un acceso de invitado?

Se prueba con un propietario, un invitado lector, un editor, un usuario sin invitación y dos proyectos vecinos. Intenta consultar por URL directa, cambiar el identificador en una petición, escribir con rol lector, aceptar dos veces y entrar después de la revocación.

Comprueba también los objetos privados asociados mediante el patrón de Supabase Storage con RLS. IndiePack ofrece el punto de partida de auth y seguridad; el permiso de invitado queda sólido cuando su alcance se representa y se prueba como dato propio.