erp-core/docs/01-fase-foundation/MGN-003-roles/requerimientos/INDICE-RF-ROLE.md

11 KiB

Indice de Requerimientos Funcionales - MGN-003 Roles/RBAC

Resumen del Modulo

Campo Valor
Modulo MGN-003
Nombre Roles y RBAC
Descripcion Control de acceso basado en roles
Total RFs 4
Story Points 64
Estado Ready
Fecha 2025-12-05

Lista de Requerimientos

ID Nombre Prioridad SP Estado
RF-ROLE-001 CRUD de Roles P0 20 Ready
RF-ROLE-002 Gestion de Permisos P0 12 Ready
RF-ROLE-003 Asignacion de Roles a Usuarios P0 17 Ready
RF-ROLE-004 Guards y Middlewares RBAC P0 15 Ready

Diagrama de Dependencias

                    ┌─────────────────┐
                    │  RF-AUTH-001    │
                    │  (Login/JWT)    │
                    └────────┬────────┘
                             │
                             ▼
┌─────────────────────────────────────────────────────────────────┐
│                    MGN-003: Roles/RBAC                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────────────┐          ┌─────────────────┐              │
│  │  RF-ROLE-002    │◄─────────│  RF-ROLE-001    │              │
│  │  Permisos       │          │  CRUD Roles     │              │
│  └────────┬────────┘          └────────┬────────┘              │
│           │                            │                        │
│           │         ┌──────────────────┘                        │
│           │         │                                           │
│           ▼         ▼                                           │
│  ┌─────────────────────────────┐                               │
│  │      RF-ROLE-003            │                               │
│  │  Asignacion Roles-Usuarios  │                               │
│  └─────────────┬───────────────┘                               │
│                │                                                │
│                ▼                                                │
│  ┌─────────────────────────────┐                               │
│  │      RF-ROLE-004            │                               │
│  │  Guards y Middlewares       │                               │
│  └─────────────────────────────┘                               │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
                             │
                             ▼
              ┌──────────────────────────┐
              │  Todos los endpoints     │
              │  del sistema usan RBAC   │
              └──────────────────────────┘

Arquitectura del Sistema RBAC

┌─────────────────────────────────────────────────────────────────┐
│                        RBAC Architecture                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   ┌─────────┐      ┌─────────┐      ┌─────────────┐            │
│   │  User   │──────│  Role   │──────│ Permission  │            │
│   └─────────┘  M:N └─────────┘  M:N └─────────────┘            │
│                                                                  │
│   Un usuario puede tener multiples roles                        │
│   Un rol puede tener multiples permisos                         │
│   Permisos efectivos = Union de permisos de todos los roles    │
│                                                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   Formato de Permisos:  modulo:accion                           │
│                         modulo:recurso:accion                   │
│                                                                  │
│   Wildcards:            users:*  (todas las acciones)           │
│                         inventory:products:*                     │
│                                                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   Flujo de Validacion:                                          │
│                                                                  │
│   Request → JwtGuard → TenantGuard → RbacGuard → Controller    │
│                                          │                       │
│                                          ▼                       │
│                                   ┌─────────────┐               │
│                                   │   Cache     │               │
│                                   │  (5 min)    │               │
│                                   └─────────────┘               │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Roles del Sistema (Built-in)

Rol Slug Permisos Base Modificable
Super Administrador super_admin Todos (*) No
Administrador admin Gestion tenant Solo extender
Gerente manager Lectura + reportes Solo extender
Usuario user Acceso basico Solo extender
Invitado guest Solo dashboard Solo extender

Catalogo de Permisos por Modulo

MGN-001 Auth (2 permisos)

  • auth:sessions:read
  • auth:sessions:revoke

MGN-002 Users (7 permisos)

  • users:read, users:create, users:update, users:delete
  • users:activate, users:export, users:import

MGN-003 Roles (6 permisos)

  • roles:read, roles:create, roles:update, roles:delete
  • roles:assign, permissions:read

MGN-004 Tenants (3 permisos)

  • tenants:read, tenants:update, tenants:billing

MGN-006 Settings (2 permisos)

  • settings:read, settings:update

MGN-007 Audit (2 permisos)

  • audit:read, audit:export

MGN-009 Reports (4 permisos)

  • reports:read, reports:create, reports:export, reports:schedule

MGN-010 Financial (6 permisos)

  • financial:accounts:read, financial:accounts:manage
  • financial:transactions:read, financial:transactions:create, financial:transactions:approve
  • financial:reports:read

MGN-011 Inventory (8 permisos)

  • inventory:products:read, inventory:products:create, inventory:products:update, inventory:products:delete
  • inventory:stock:read, inventory:stock:adjust
  • inventory:movements:read, inventory:movements:create

Total: ~40 permisos base


Estimacion Total

Capa Story Points
Backend: Endpoints 15
Backend: Guards/Decorators 10
Backend: Logica permisos 8
Backend: Cache 4
Backend: Tests 10
Frontend: RolesPage 6
Frontend: PermissionSelector 4
Frontend: RoleAssignment 5
Frontend: Tests 6
Total 68 SP

Nota: Los 64 SP indicados en resumen corresponden a la suma de RF individuales. La estimacion detallada es de 68 SP incluyendo integracion.


Definition of Done del Modulo

  • RF-ROLE-001: CRUD de roles completo
  • RF-ROLE-002: Catalogo de permisos seeded
  • RF-ROLE-003: Asignacion roles-usuarios funcional
  • RF-ROLE-004: Guards aplicados a todos los endpoints
  • Cache de permisos implementado
  • Tests unitarios > 80% coverage
  • Tests e2e de flujos RBAC
  • Documentacion Swagger completa
  • Code review aprobado
  • Security review aprobado

Notas de Implementacion

Orden Recomendado

  1. Primero: RF-ROLE-002 (Permisos) - Seed inicial de permisos
  2. Segundo: RF-ROLE-001 (Roles) - CRUD de roles con permisos
  3. Tercero: RF-ROLE-003 (Asignacion) - Vincular usuarios y roles
  4. Cuarto: RF-ROLE-004 (Guards) - Proteger todos los endpoints

Consideraciones de Seguridad

  • Nunca revelar que permiso falta en errores 403
  • Logs de acceso denegado para auditoria
  • Super Admin no debe poder eliminarse a si mismo
  • Cache de permisos debe invalidarse al cambiar roles
  • Validar permisos en CADA request (no confiar en frontend)

Historial

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