Cómo actualizar un rol de acceso
Cambia el nombre o la descripción de un rol de acceso editable en Grupo Marea Demo o en Marea Gran Via sin alterar sus permisos.
En este artículo
Este artículo cubre la actualización de los datos básicos de un rol de acceso existente: nombre y descripción. El rol permanece en el mismo scope y conserva su relación con la organización o la ubicación activa.
La tabla de permisos aparece en la misma pantalla para mantener el contexto y validar el formulario, pero cambiar checks pertenece a `access.roles.set-permissions`. Para esta acción, deja los permisos intactos y guarda solo el texto del rol.
Antes de empezar
- Sesión autenticada en la app.
- Organización activa: Grupo Marea Demo.
- Para la variante de ubicación, ubicación activa: Marea Gran Via.
- El operador puede abrir roles con `permissions:view` y solo puede editarlos con `permissions:manage` en el scope correspondiente.
- El rol existe y pertenece al scope activo: en organización tiene `role.org_id`; en ubicación tiene `role.location_id === selectedLocationId`.
- El rol conserva al menos un permiso seleccionado, porque la UI no habilita Guardar si el nombre queda vacío o no hay permisos seleccionados.
Instrucciones
- 1.
Abre la pestaña Roles de usuario
Entra en `organization/access?tab=roles` o `location/access?tab=roles`. Revisa `Scope`, `Propietario` y la acción disponible en cada fila antes de abrir el detalle.
- 2.
Entra en un rol editable
Pulsa Editar en un rol propio del scope activo. El detalle carga Nombre, Descripción, Scope bloqueado y los permisos ya asignados al rol.
- 3.
Actualiza nombre o descripción
Cambia solo el Nombre y/o la Descripción. No modifiques los checks de permisos si la documentación debe demostrar únicamente `access.roles.update`.
- 4.
Guarda los cambios
Pulsa Guardar. La app envía el update de nombre y descripción, invalida lista y detalle, muestra Rol actualizado y vuelve a la pestaña Roles de usuario.
Validaciones y límites
- Guardar se habilita solo si hay cambios, la pantalla no está en lectura, el nombre es válido, queda al menos un permiso seleccionado y no hay envío en curso.
- El nombre recortado no puede quedar vacío.
- La descripción es opcional; dejarla vacía elimina la descripción guardada.
- En organización se ejecuta `PUT /api/app/{orgId}/roles/{roleId}` con `name` y `description` opcional.
- En ubicación se ejecuta `PUT /api/app/{orgId}/{locationId}/roles/{roleId}` con `name` y `description` opcional.
- El backend actualiza solo `roles.name` y `roles.description`; no cambia scope, org_id, location_id, color, role_permissions ni user_roles.
- Sin `permissions:manage`, o si el rol es de sistema, global o heredado, el detalle queda en lectura y no se ejecuta el update.
- Si el rol no existe o no pertenece al contexto activo, la app muestra Rol no encontrado o un error de guardado; una colisión de nombre responde como conflicto.
Resultado esperado
El rol mantiene su scope y sus permisos, pero queda con nombre o descripción actualizados. El operador vuelve al listado de roles con el aviso Rol actualizado.