erp-core/docs/01-fase-foundation/MGN-003-roles/historias-usuario/US-MGN003-002.md

5.7 KiB

US-MGN003-002: Gestion de Permisos

Identificacion

Campo Valor
ID US-MGN003-002
Modulo MGN-003 Roles/RBAC
Sprint Sprint 2
Prioridad P0 - Critica
Story Points 5
Estado Ready
Autor System
Fecha 2025-12-05

Historia de Usuario

Como administrador del sistema Quiero ver el catalogo de permisos disponibles agrupados por modulo Para asignar los permisos correctos a cada rol


Criterios de Aceptacion

Escenario 1: Listar permisos agrupados

Given un admin autenticado con permiso "permissions:read"
When accede a GET /api/v1/permissions
Then el sistema retorna permisos agrupados por modulo
  And cada modulo incluye nombre y lista de permisos
  And cada permiso incluye code, name, description
  And no incluye permisos deprecados

Escenario 2: Buscar permisos

Given 40 permisos en el sistema
When el admin busca "users"
Then el sistema retorna solo permisos que contienen "users"
  And mantiene agrupacion por modulo
  And la busqueda es case-insensitive

Escenario 3: Mostrar permisos en selector

Given admin creando un nuevo rol
When ve el selector de permisos
Then los permisos estan agrupados por modulo
  And puede expandir/colapsar cada modulo
  And puede seleccionar multiples permisos
  And puede seleccionar "todos" de un modulo

Escenario 4: Wildcard en permisos

Given un rol con permiso "users:*"
When se visualizan los permisos del rol
Then aparece "users:*" como seleccionado
  And indica que incluye todos los permisos de usuarios
  And los permisos individuales aparecen como "incluidos"

Mockup / Wireframe

Selector de Permisos (en modal de crear/editar rol)
┌────────────────────────────────────────────────────────────────┐
│ Buscar permisos: [________________]     [Seleccionar todos]    │
├────────────────────────────────────────────────────────────────┤
│                                                                 │
│ ▼ Gestion de Usuarios (7 permisos)                   [☑ Todos] │
│   ┌──────────────────────────────────────────────────────────┐│
│   │ ☑ users:read    - Leer usuarios                          ││
│   │ ☑ users:create  - Crear usuarios                         ││
│   │ ☐ users:update  - Actualizar usuarios                    ││
│   │ ☐ users:delete  - Eliminar usuarios                      ││
│   │ ☐ users:activate - Activar/Desactivar usuarios          ││
│   │ ☐ users:export  - Exportar lista de usuarios            ││
│   │ ☐ users:import  - Importar usuarios                      ││
│   └──────────────────────────────────────────────────────────┘│
│                                                                 │
│ ▶ Roles y Permisos (6 permisos)                      [☐ Todos] │
│                                                                 │
│ ▶ Inventario (9 permisos)                            [☐ Todos] │
│                                                                 │
│ ▶ Modulo Financiero (7 permisos)                     [☐ Todos] │
│                                                                 │
├────────────────────────────────────────────────────────────────┤
│ Permisos seleccionados: 2                                      │
└────────────────────────────────────────────────────────────────┘

Notas Tecnicas

API Endpoints

GET /api/v1/permissions?search=users

// Response
{
  "data": [
    {
      "module": "users",
      "moduleName": "Gestion de Usuarios",
      "permissions": [
        {
          "id": "uuid",
          "code": "users:read",
          "name": "Leer usuarios",
          "description": "Ver listado y detalle de usuarios"
        },
        // ...
      ]
    }
  ]
}

Permisos por Modulo

Modulo Cantidad Ejemplo
auth 2 auth:sessions:read
users 7 users:read, users:create
roles 6 roles:read, roles:assign
tenants 3 tenants:read
settings 2 settings:update
audit 2 audit:read
reports 4 reports:export
financial 7 financial:transactions:create
inventory 9 inventory:products:read

Definicion de Done

  • Endpoint GET /api/v1/permissions
  • Busqueda por texto
  • Agrupacion por modulo
  • Frontend: PermissionSelector component
  • Frontend: Expand/collapse por modulo
  • Frontend: Seleccion multiple
  • Tests unitarios
  • Code review aprobado

Estimacion

Tarea Horas
Backend: Endpoint 2h
Backend: Agrupacion 1h
Backend: Tests 1h
Frontend: PermissionSelector 5h
Frontend: Tests 2h
Total 11h

Historial

Version Fecha Autor Cambios
1.0 2025-12-05 System Creacion inicial