Cargando…

Esto está tardando más de lo esperado.

Volver al centro de ayuda

Equipos y el selector de equipos

Qué ve una persona después de iniciar sesión, cómo se crea, se entra, se configura, se abandona y se cierra un equipo.

Una persona inicia sesión una vez y trabaja dentro de un equipo a la vez. Esta guía sigue a esa persona desde el inicio de sesión hasta la pantalla de configuración del equipo, y dice qué clave de configuración cambia cada paso. Asume que la base ya corre; ve Ponlo a correr en el sitio de la base para eso.

El selector en /app

Después de iniciar sesión la persona llega a /app, el selector de equipos. Lista cada equipo al que pertenece, con su logo, y un botón para crear uno nuevo. Hacer clic en un equipo abre su espacio de trabajo en /team.

La elección se recuerda en dos lugares: una cookie team_id y la columna current_team_id del usuario. La siguiente visita a /app se salta la lista y abre ese equipo directamente, mientras la persona siga perteneciendo a él. Para ver la lista otra vez, la barra lateral del espacio de trabajo tiene un enlace Cambiar de equipo, que abre /app?redirect=false. Cerrar sesión olvida la cookie.

Cuando la persona no pertenece a ningún equipo, el selector muestra sólo el botón para crear uno.

Un equipo por persona

Pon APP_ENABLE_MULTI_TEAMS=false en .env y el selector desaparece de la vista: la persona es enviada al único equipo al que pertenece, y alguien sin equipo ve un error que le pide contactar al administrador en lugar de un botón de crear. Úsalo cuando tu producto crea el equipo para el cliente y el cliente nunca hace otro.

Crear un equipo

El botón Crear equipo abre /app/teams/create. El nombre es obligatorio, la descripción es opcional. Guardar hace el resto:

  1. La persona se vuelve propietaria del equipo, guardada como creator_user_id, y su primer miembro.
  2. Los roles de config/app.php → team_roles se crean dentro del equipo, y el rol de propietario nombrado en team_owner_role se crea con todos los permisos del equipo y se asigna a quien lo creó. Ve Roles y permisos del equipo.
  3. El selector se abre con el equipo nuevo seleccionado.

La primera visita al tablero del equipo lo suscribe al plan gratuito cuando los planes están encendidos y existe un plan gratuito, así que un equipo sin tarjeta puede empezar a trabajar. Ve Planes y cobros del equipo.

El espacio de trabajo en /team

Todo lo que está bajo /team corre dentro del equipo seleccionado, protegido por el middleware team: carga el equipo, comprueba que la persona siga siendo miembro y activa los permisos del equipo para la petición. Una persona eliminada del equipo es enviada de vuelta al selector en su siguiente clic. Ve El contexto del equipo para lo que eso significa en código.

URL Qué muestra Quién llega
/team El tablero: contadores de roles, miembros e invitaciones, y el uso de los límites del plan. Cualquier miembro.
/team/members Los miembros y las invitaciones pendientes. Miembros con retrieve members.
/team/members/create El formulario para agregar un miembro. Miembros con retrieve members; el enlace hacia él se muestra sólo a miembros con create members mientras el plan tenga espacio.
/team/roles Los roles del equipo. Miembros con los permisos de roles.
/team/media, /team/space Los archivos compartidos del equipo, y cuánto disco ocupan. Miembros con manage media.
/team/settings Nombre, descripción, logo, campos extra, importar y exportar los datos del equipo, y abandonar o cerrar el equipo. Miembros con edit settings.
/team/plans, /team/add-ons, /team/billing, /team/payment-methods, /team/debt La suscripción del equipo y el saldo que debe. El propietario y los miembros con manage plans; a cualquier otro se le regresa al tablero con un mensaje.

El propietario pasa cada una de esas comprobaciones sin tener el permiso.

El tablero y las pantallas de miembros, roles, archivos, espacio y configuración también exigen que el equipo tenga una suscripción cuando los planes están encendidos. Las pantallas de cobros nunca lo exigen, así que un equipo cuyo plan venció todavía llega a la página que lo arregla.

Configuración del equipo

/team/settings edita lo que el equipo es:

  • Nombre y descripción.
  • Logo. Un archivo jpeg, png, gif, webp, heic, heif o avif de hasta 5 MB, guardado en la biblioteca de archivos del equipo y contado contra la cuota de espacio del equipo. Sin uno, el equipo muestra un avatar generado a partir de su nombre. Ve Archivos y espacio del equipo.
  • Campos extra. Pares de clave y valor guardados en la columna json extra_fields, para lo que tu producto necesita saber de un equipo y la base no: un RFC, una dirección, una industria. Léelos como team()->extra_fields['tax_id'].
  • Importar y exportar datos. Empaqueta los datos del equipo en un archivo, y lee uno de vuelta dentro del equipo. Ve Mueve los datos de un equipo entre entornos.

Abandonar o cerrar el equipo

La misma pantalla tiene el botón para abandonar el equipo y, para el propietario, para cerrarlo. Ambos piden a la persona escribir el nombre del equipo antes de que pase algo.

  • Un miembro que confirma es eliminado del equipo y enviado al selector. Recibe la misma notificación que alguien eliminado por el propietario.
  • El propietario que confirma cierra el equipo: se elimina con soft delete, cada miembro pierde el acceso y el propietario es enviado al selector. Los roles, la suscripción y los registros del equipo se quedan en la base de datos, así que un administrador puede restaurarlo desde el panel de administración.

No hay transferencia de propiedad en el kit: el propietario es la persona que creó el equipo, mientras el equipo exista.

Notificaciones que envía un equipo

Qué pasó A quién se le avisa Cómo
Agregado a un equipo El miembro nuevo En la cuenta y por correo.
Eliminado de un equipo, o lo abandonó El miembro En la cuenta y por correo.
Invitado a un equipo en el que todavía no tiene cuenta El correo invitado Por correo, con un enlace para registrarse.
Se le creó una cuenta El correo aprovisionado Por correo, con un enlace para poner una contraseña.

Las últimas dos se describen en Miembros e invitaciones.