# 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)