¡Ya casi terminamos el reto! Después de dominar la lógica de negocio y la interfaz, llegamos al tema más serio de cualquier ERP: la Seguridad. Específicamente, cómo controlamos el acceso a nivel de los datos que se muestran en las listas y formularios.
La herramienta para esto en Odoo (V19) es la Regla de Registro (ir.rule).
¿Qué hemos cubierto en el Día 20?
Hemos creado un fichero XML de seguridad para definir una nueva regla de registro que aplica un filtro a nuestro modelo, asegurando que solo se muestren los registros que cumplen una condición específica.
Los componentes clave que hemos cubierto son:
1. El Propósito de ir.rule
Las reglas de registro actúan como un filtro de seguridad adicional después de que los derechos de acceso (ACLs, que controlan si puedes ver el modelo) han dado permiso. La regla de registro filtra la lista de registros devueltos por la consulta.
2. Definición en XML
Una regla de registro se define con la etiqueta <record> apuntando al modelo ir.rule. Los campos clave son:
- model_id: El modelo al que se aplicará la regla.
- groups: El grupo de seguridad para el cual la regla será efectiva. Si se deja vacío, aplica a todos los usuarios (¡cuidado!).
- perm_read, perm_write, perm_create, perm_unlink: Los permisos que esta regla está intentando restringir o aplicar.
- domain_force: ¡El campo más importante! Aquí se define el filtro de Odoo (domain) que debe cumplirse para que el registro sea visible.
3. El Poder del domain_force Dinámico
El domain_force puede ser estático ([(‘is_active’, ‘=’, True)]) o, lo que es más común, dinámico, utilizando variables especiales como user.id o user.company_id.
- Ejemplo Clásico (Regla «Mis Registros»): [(‘user_id’, ‘=’, user.id)] — Esta regla filtra todos los registros del modelo para que solo se muestren aquellos donde el campo user_id sea igual al ID del usuario actual.
La Importancia para el ERP
Las Reglas de Registro son la base de la seguridad multi-tenant y la privacidad de los datos. Sin ellas, un usuario con permisos de lectura vería todos los datos de la base de datos, lo cual es inaceptable en un entorno empresarial.
Explicación Detallada en Vídeo
En el siguiente vídeo, te muestro paso a paso la sintaxis XML de ir.rule, cómo asociarla correctamente a un grupo y cómo construir un domain dinámico que use la información del usuario actual.
Código Fuente en GitLab
Puedes consultar el código fuente completo de esta lección, con la implementación de una Regla de Registro de ejemplo, directamente en nuestro repositorio.
➡️ Ver el Código en GitLab: https://github.com/angelmoya/calendario-adviento-curso-tecnico-odoo-19/tree/9565016c942a6304df5356c99909bdf52780866c
Conecta Conmigo y Sigue Aprendiendo
¡Tu módulo ya es seguro! Mañana, un respiro con el campo más sencillo para compartir datos.
- LinkedIn: Conecta conmigo en LinkedIn
YouTube: ¡No olvides suscribirte al canal para no perderte ninguna lección! http://www.youtube.com/@AngelMoya-Odoo