Eliminar rol de acceso
Elimina un rol editable y propio del ámbito actual desde el listado o desde el detalle. La operación se limita al scope abierto, organización o ubicación, y no borra usuarios ni permisos del catálogo.
En este artículo
Usa esta guía cuando necesites retirar un rol temporal o descartable de Grupo Marea Demo o de Marea Gran Via sin tocar roles estándar, heredados ni globales.
La eliminación borra la fila del rol y sus asociaciones de permisos y usuarios por cascada. Por eso debe ejecutarse solo con roles propios del ámbito actual y con permiso de gestión.
Antes de empezar
- Tener sesión iniciada en Antylogic con Grupo Marea Demo seleccionado.
- Para la variante de ubicación, tener Marea Gran Via disponible como ubicación activa.
- Tener `permissions:view` o `permissions:manage` para abrir la pestaña de roles del ámbito correspondiente.
- Tener `permissions:manage` en ese mismo ámbito para ver las acciones destructivas y confirmar el borrado.
- Elegir un rol editable y propio del scope actual: de organización sin `location_id`, o de ubicación con `location_id` de Marea Gran Via.
- Usar solo roles temporales para capturas o vídeos; no borrar `owner`, `organization-admin`, `location-admin`, `front-desk` ni `cashier`.
Instrucciones
- 1.
Abre Roles
Entra en `organization/access?tab=roles` para trabajar con roles de Grupo Marea Demo, o en `location/access?tab=roles` para trabajar con roles de Marea Gran Via. La pestaña aparece cuando el usuario tiene permiso de lectura o gestión de roles.
- 2.
Elige un rol propio
Localiza un rol temporal del ámbito actual. Los roles con propietario Sistema, los roles globales y los heredados pueden aparecer en la tabla, pero no se eliminan desde esta acción.
- 3.
Abre la confirmación
Desde el listado, pulsa Eliminar en la fila del rol. Desde el detalle, abre `organization/access/roles/:roleId?tab=roles` o `location/access/roles/:roleId?tab=roles` y pulsa Eliminar en el footer.
- 4.
Confirma el borrado
Pulsa Eliminar en el modal. La app envía un DELETE sin cuerpo al endpoint del scope actual y, si responde correctamente, muestra Rol eliminado y actualiza el listado.
- 5.
Comprueba el impacto
Revisa que el rol ya no aparece en Roles de usuario. La operación elimina también las filas relacionadas en `role_permissions` y `user_roles`, pero no elimina usuarios ni permisos del catálogo `permissions`.
Validaciones y límites
- La pestaña de roles solo se muestra con `permissions:view` o `permissions:manage`.
- La acción Eliminar solo aparece para usuarios con `permissions:manage` y queda deshabilitada si el rol no pertenece al scope actual.
- La pantalla de creación, un detalle sin `roleId`, un rol no cargado o un detalle de solo lectura no ejecutan la eliminación.
- En organización se llama a `DELETE /api/app/{orgId}/roles/{roleId}` y el repositorio borra solo filas con `location_id IS NULL`.
- En ubicación se llama a `DELETE /api/app/{orgId}/{locationId}/roles/{roleId}` y el backend valida que el rol pertenece a ese `locationId`.
- La respuesta de éxito es `204 No Content` y React Query invalida el listado y el detalle del rol.
- No hay borrado masivo ni payload: cada operación elimina un único `roleId` y no envía `permission_ids`.
- No documentes bloqueo por rol asignado a usuarios; la evidencia disponible indica cascada SQL sobre `user_roles`.
Resultado esperado
El rol editable queda eliminado del ámbito actual, el listado se refresca y se conservan los usuarios y el catálogo de permisos, aunque se retiran las asociaciones de ese rol.