erp-construccion/docs/97-adr/ADR-006-rbac-sistema-permisos.md

83 lines
2.2 KiB
Markdown

# ADR-006: RBAC - Sistema de Permisos
**Estado:** Aceptada
**Fecha:** 2025-11-24
**Responsable:** Architecture-Analyst
**Proyecto:** ERP Construccion
## Contexto
El ERP de Construccion requiere control de acceso granular para:
- Roles de construccion: Director, Residente, Almacenista, Contador
- Permisos por proyecto/fraccionamiento
- Control de datos sensibles (presupuestos, estimaciones)
- Cumplimiento INFONAVIT
## Decision
**RBAC (Role-Based Access Control)** con:
- Roles jerarquicos (herencia)
- Permisos por recurso y accion
- RLS (Row-Level Security) en PostgreSQL
- Field-level permissions para datos sensibles
```typescript
// Roles especificos de construccion
const ROLES = {
SUPER_ADMIN: 'super_admin',
DIRECTOR_GENERAL: 'director_general',
DIRECTOR_PROYECTO: 'director_proyecto',
RESIDENTE_OBRA: 'residente_obra',
SUPERVISOR: 'supervisor',
ALMACENISTA: 'almacenista',
CONTADOR: 'contador',
DERECHOHABIENTE: 'derechohabiente', // Portal INFONAVIT
};
```
## Justificacion
### Referencia a Odoo
- ir.rule pattern para RLS
- Permisos por modelo y accion
### Referencia a Gamilit
- RBAC con herencia funcional
- RLS policies robustas
### Especifico para Construccion
- Residente solo ve sus proyectos asignados
- Director ve todos los proyectos
- Derechohabiente solo ve su vivienda
- Almacenista no ve presupuestos
## Consecuencias
### Positivas
- Control granular por rol
- Seguridad a nivel de base de datos (RLS)
- Cumplimiento regulatorio
- Audit trail completo
### Negativas
- Complejidad en gestion de permisos
- Mitigacion: UI de administracion de roles
## Implementacion
### Acciones Requeridas
- [x] Definir matriz de roles y permisos
- [x] Implementar RLS policies por rol
- [ ] UI de gestion de roles
- [ ] Field-level permissions para presupuestos
### Criterios de Aceptacion
- Residente no ve proyectos de otros
- Director ve todos los proyectos
- Derechohabiente solo ve su vivienda en portal
- Audit trail de accesos
## Referencias
- [ERP Generico ADR-006](../../erp-generic/docs/adr/ADR-006-rbac-sistema-permisos.md)
- [RF-AUTH-001-roles-construccion.md](../01-fase-alcance-inicial/MAI-001-fundamentos/requerimientos/RF-AUTH-001-roles-construccion.md)