Cómo invitar un usuario a una ubicación
Invita a Marea Gran Via a uno o varios usuarios que ya existen en el directorio. La acción se realiza desde la pestaña Usuarios, deja la membresía de ubicación en estado `invited` y muestra el resultado como Invitado.
En este artículo
Este flujo sirve para dar acceso a una ubicación sin crear una cuenta nueva. El responsable parte de la lista de usuarios de Marea Gran Via, busca candidatos existentes del directorio y confirma la invitación desde el modal.
La invitación de ubicación depende de la relación previa del usuario con Grupo Marea Demo. Si ya pertenece a la organización, se genera o reutiliza una invitación de ubicación; si todavía no pertenece, la invitación de organización tiene prioridad y la ubicación queda también invitada.
Antes de empezar
- Sesión iniciada con Grupo Marea Demo y Marea Gran Via seleccionados.
- `users:view` o `users:manage` en la ubicación para ver la pestaña Usuarios.
- `users:manage` en la ubicación para ver y usar `Invitar usuario`.
- Permisos de organización suficientes para buscar candidatos: `users:manage` en el directorio y `users:view` para el filtro de miembros aceptados.
- El usuario objetivo ya debe existir en `users`; esta acción no invita escribiendo un email nuevo.
Instrucciones
- 1.
Abre la pestaña Usuarios
Entra en `location/access?tab=users` con Marea Gran Via seleccionada. La tabla muestra usuarios asociados a la ubicación con nombre, estado, email, teléfono y rol de staff cuando exista.
- 2.
Pulsa Invitar usuario
Con `users:manage`, abre el modal `Invitar usuarios`. La búsqueda empieza vacía y no carga candidatos hasta que escribes texto.
- 3.
Busca y selecciona candidatos
Escribe parte del nombre o email. La app consulta el directorio de Grupo Marea Demo, excluye usuarios internos y oculta los usuarios ya visibles en la página actual de la tabla.
- 4.
Confirma la invitación
Marca uno o varios candidatos y pulsa `Invitar (n)`. La app envía `POST /api/app/{orgId}/{locationId}/users` con `user_ids` y `status` en `invited`.
- 5.
Comprueba el estado
Tras el toast `Invitaciones enviadas`, vuelve al listado y busca el usuario. Debe aparecer en Marea Gran Via con estado `Invitado`; la asignación de roles se gestiona en acciones separadas.
Validaciones y límites
- El botón de confirmación queda deshabilitado si no hay usuarios seleccionados o si la invitación está en curso.
- `handleInviteUsers` no llama a la API si falta `selectedOrgId` o no hay selección.
- El backend acepta `user_ids` o `user_id`, recorta valores vacíos y responde `400` con `user id requerido` si no queda ningún id.
- Si `status` no viene informado, la ruta usa `invited`; la UI de este flujo siempre envía `invited`.
- Los estados admitidos por el servicio son `invited`, `accepted`, vacío o `remove`; otros valores producen `estado invalido`.
- El directorio solo devuelve usuarios existentes externos; no crea usuarios por email y excluye identidades internas.
- Cuando se invitan varios `user_ids`, el backend los procesa uno a uno; el lote completo no es una transacción atómica.
- Un operador puede ver el botón por permiso de ubicación, pero la búsqueda de candidatos usa endpoints de organización y puede fallar sin esos permisos.
Resultado esperado
El usuario queda asociado a Marea Gran Via con membresía de ubicación `invited`, la lista de usuarios se invalida para recargarse y la invitación correspondiente queda creada o reutilizada según su estado previo en Grupo Marea Demo.