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.
Índice
¿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.