OdooWiki OCA HUB
Tools Licencia: AGPL-3

Este módulo reemplaza los grupos de seguridad estándar de Odoo por roles.

Al instalar el módulo, todos los grupos de seguridad se eliminan de los usuarios, las acciones y los elementos de menú. Cuando se carga la interfaz de usuario, la definición de grupo dentro de los mapas de pantalla XML también se ignora.

Un rol es equivalente a un grupo (cada rol tiene un 'grupo de rol' asociado), pero la principal diferencia es la naturaleza plana de un rol. Debido a la naturaleza jerárquica de un grupo, acciones simples como instalar un nuevo módulo o añadir un grupo a, por ejemplo, un elemento de menú pueden provocar la concesión automática e incontrolada de derechos de seguridad.

Con este enfoque, cada derecho debe concederse explícitamente a cada rol. Esto implica un coste de gestión adicional que puede ser elevado y, por lo tanto, aconsejamos realizar un cálculo de riesgos antes de implementar este módulo.

Con el fin de mantener el coste de mantenimiento de las políticas de seguridad en un nivel aceptable, el módulo dispone de una función de exportación/importación a Excel.

Crear un nuevo rol es tan sencillo como exportar uno existente. En el archivo de exportación, se pueden añadir/eliminar derechos y el resultado se puede reimportar en un nuevo rol.

Desde un punto de vista técnico, este módulo no realiza ningún cambio en el kernel de Odoo. Los grupos de rol se utilizan para aplicar la política de seguridad.

Derechos de acceso predeterminados en menús, acciones y campos

El enfoque estándar de Odoo es dar a los usuarios acceso a todos los elementos de menú y vinculaciones de acciones sin un grupo de seguridad. Este enfoque se modifica con este módulo. Nota: ¡también se pueden añadir acciones de cliente! Cada elemento de menú y vinculación de acción debe añadirse explícitamente a un rol para que esté disponible para el usuario.

Todos los grupos estándar se eliminan de los menús y las acciones excepto los 'grupos intocables'. De forma predeterminada, estos son:

  • base.group_no_one
  • base.group_erp_manager
  • base.group_system
  • base.group_portal
  • base.group_public

Derechos de acceso predeterminados en vistas

En la versión actual de este módulo, el acceso a las vistas está, en consecuencia, protegido por una combinación de:

  • ACLs del modelo de vista
  • vinculaciones de acciones
  • elementos de menú

Además, los grupos dentro de la arquitectura de la vista se eliminan en el momento de carga de la vista.

Con el fin de compensar la capacidad de añadir grupos en elementos de vista, se ha añadido un nuevo atributo: "roles" con valor de atributo una lista de códigos de rol.

El atributo roles funciona de forma similar al atributo groups: el elemento de vista se eliminará si un usuario no pertenece a uno de los roles especificados.

|

Sintaxis:

Las Reglas de Modificación de Vistas deben utilizarse para ocultar elementos de vista.

Reglas de Modificación de Vistas

La mayor diferencia es probablemente la parte de 'Reglas de Modificación de Vistas', que reemplaza el mecanismo estándar de herencia de vistas cuando, por ejemplo, es necesario ocultar algunos campos para determinados roles. Las Reglas de Modificación de Vistas tienen un campo de prioridad que determina la regla ganadora en caso de que conceda varios roles a un único usuario.

Los roles combinados pueden dar lugar a resultados inesperados para el usuario final. Por ejemplo, un usuario puede tener acceso a un botón en un determinado rol pero perder ese acceso en un rol combinado.

Se recomienda que un usuario con varios roles seleccione el rol habilitado a través de sus Preferencias (de forma predeterminada, todos sus roles se combinan).

El enfoque de vista/elemento de vista es diferente de las demás reglas de política de roles en el sentido de que cada vista/elemento de vista se envía a la interfaz de usuario, ya que los grupos de seguridad estándar se eliminan en el momento de renderización de la vista. No queremos introducir la carga administrativa de definir cada vista/elemento de vista explícitamente en el rol. En consecuencia, las vistas o elementos de vista no deseados deben eliminarse mediante la opción remove.

La diferencia entre Invisible y Remove es esencial, ya que Invisible implica que el usuario necesita acceso ACL al campo que no debe renderizarse.

Las Reglas de Modificación de Vistas también permiten establecer los modificadores de un determinado elemento sin especificar una vista, por ejemplo, para ocultar un determinado campo para todas las vistas de un objeto. Esto puede refinarse aún más aplicando un tipo de vista específico. La opción Remove no está permitida sin definir una vista.

Dado que los entornos complejos pueden tener un gran número de Reglas de Modificación de Vistas, este módulo permite cargar un gran conjunto de reglas sin comprobación de sintaxis. Por lo tanto, cargar un nuevo rol desde Excel puede dar lugar a errores de pantalla para los usuarios afectados. Se pondrá a disposición un botón de comprobación de sintaxis con el fin de verificar la sintaxis con autocorrección cuando sea factible.

Reglas de Atributos de Tipo de Vista

Con esta función, los atributos de tipo de vista como create, edit, delete, duplicate, import, export_xlsx pasan a estar basados en roles. Cualquiera de estos atributos puede reemplazarse con estas reglas (por ejemplo, decoration-% basado en roles).

Reglas de Operación del Modelo de Vista

Con esta función, una serie de operaciones para los modelos seleccionados pasan a estar basadas en roles. Definir estas operaciones tendrá un efecto en todas las vistas definidas sobre el modelo.

También puede establecer valores predeterminados para todos los modelos especificando default como nombre del modelo.

Operaciones admitidas:

  • create
  • edit
  • delete
  • duplicate
  • export
  • import
  • archive

Métodos de Modelo

A través de la pestaña "Model Methods", puede conceder derechos de ejecución a un conjunto de métodos predefinidos en los modelos ORM.

El módulo base role_policy proporciona el marco para esta función. Se requieren módulos específicos de la aplicación para ampliar el conjunto predefinido de métodos.

Añadir métodos adicionales requiere solo unas pocas líneas de código. Consiste en ampliar una lista de selección con el Model Method, añadir una búsqueda de role_policy al método y pasar el contexto role_policy_has_groups_ok.

Por ejemplo, el módulo role_policy_account añade el método account.move,post a esta lista

Los métodos definidos en este conjunto solo están disponibles para aquellos roles que los hayan añadido en la página de cuaderno Model Methods.

Roles Combinados - Selector de Política de Roles

Los roles combinados pueden dar lugar a resultados inesperados para el usuario final. Por ejemplo, un usuario puede tener acceso a un botón en un determinado rol pero perder ese acceso en un rol combinado.

Las siguientes reglas tienen un campo de prioridad que determina la regla ganadora en caso de que conceda varios roles a un único usuario:

  • Reglas de Modificación de Vistas
  • Reglas de Atributos de Tipo de Vista
  • Reglas de Operación del Modelo de Vista

por lo que la ausencia de regla para uno de los roles del usuario se considera de máxima prioridad.

Esta lógica tiene sentido en determinados escenarios de negocio, pero puede ser completamente errónea para otros casos de uso. En realidad, es imposible llegar a un conjunto mantenible de roles y configurar todos los casos de uso posibles para roles combinados.

En una organización grande, se añadirán nuevos roles de forma regular. Mantener un conjunto coherente de reglas para que este nuevo rol pueda combinarse con todos los roles existentes da lugar a millones de combinaciones, por lo que es imposible de mantener.

Un ejemplo concreto para ilustrar la lógica de la regla ganadora:

:

Supongamos que tenemos tres roles: Back Office Sales (BO), Sales Manager (SM), Finance Manager (FM)

Ahora definimos las siguientes Reglas de Modificación de Vistas en un Pedido de Venta:

  • partner_id readonly=1 para el rol BO, con prioridad 2 para esta regla.
  • partner_id readonly=0 para el rol FM, prioridad 1.
  • sin regla para partner_id para el rol SM. Ahora el Finance Manager se va de vacaciones y el responsable de seguridad añade temporalmente el rol FM a un empleado de Back Office Sales. Esta persona podrá ahora cambiar el partner_id en un Pedido de Venta debido a que gana la regla de mayor prioridad. El SM siempre podrá cambiar el campo partner_id, ya que el formulario estándar de Pedido de Venta de Odoo lo permite. Si el SM necesita asumir temporalmente las tareas de BO y, por lo tanto, obtiene los dos roles, seguirá pudiendo cambiar el campo partner_id del Pedido de Venta porque la ausencia de regla para uno de los roles del usuario se considera de máxima prioridad. Pero si ahora añadimos la regla partner_id al rol SM con readonly=0 y prioridad estándar 16, entonces obtenemos como resultado que el SM puede actualizar el partner_id en su rol SM pero pierde esta capacidad en el rol combinado SM/BO.

Estos tipos de conflictos deberían resolverse mediante la creación de un nuevo rol, evitando así la necesidad de roles combinados.

En caso de que alguien necesite asumir las actividades de un colega de forma temporal, la creación de un nuevo rol no es realista.

Para ese propósito debe utilizarse el Selector de Política de Roles.

A través del formulario 'My Profile', el usuario puede seleccionar sus 'Enabled Roles' como un subconjunto de los roles a los que tiene derecho. Al hacerlo, obtendrá acceso a las capacidades del/los Rol(es) Habilitado(s) y no a la combinación de todos sus roles.

Usuario Administrador

Las reglas de Política de Roles NO se aplican a los siguientes usuarios:

  • base.user_admin
  • base.user_root

Esto se hace para evitar que el usuario administrador no pueda corregir errores (por ejemplo, al deshabilitar la edición en res.users).

Desde un punto de vista de seguridad, se recomienda utilizar la cuenta de administrador (base.user_admin) solo en circunstancias excepcionales y crear otras cuentas con derechos de administración para mantener la configuración de Odoo.

Tipos de Usuario / Usuario Interno En la implementación actual de este módulo, cada usuario se añade al grupo de seguridad estándar 'base.group_user (User Types / Internal User)'. La mayoría de los módulos de Odoo añaden nuevos objetos, así como ACLs sobre esos nuevos objetos. En muchos casos, esas ACLs estándar se establecen para este grupo base.group_user*.

Esto puede dar lugar a que se concedan demasiados derechos a los usuarios, ya que desde el punto de vista de las ACLs los nuevos usuarios reciben los derechos combinados de las ACLs de group.group_user y las ACLs de su(s) rol(es).

Actualmente está en investigación la eliminación de los usuarios habituales del grupo 'base.group_user'.

ACLs

Los únicos objetos que están disponibles al crear un nuevo usuario son los objetos con:

  • ACL global (por ejemplo, res_country group_user_all que concede acceso de lectura sobre res.country)
  • ACL de base.group_user (por ejemplo, ir_ui_menu group_user que concede acceso de lectura sobre ir.ui.menu)

Al añadir un usuario a uno o varios roles, este usuario también obtendrá todos los derechos ACL definidos dentro de su(s) rol(es).

Configuración Multiempresa

Los roles pueden compartirse entre empresas. Para ello, debe adaptar la función predeterminada en el campo res.role, company_id.

Importar / Exportar

Puede modificar un archivo de política exportado para actualizar un rol o crear un nuevo rol.

Para eliminar entradas, debe poner 'X' en la columna con 'Delete Entry' como encabezado de columna.

Cualquier fila que empiece por '#' se ignorará durante la importación.

Eliminación de Grupos Estándar

La eliminación de los grupos estándar puede dar lugar a un comportamiento inesperado, ya que hay varios módulos que utilizan los grupos estándar codificados directamente en python.

Ejemplo= en el módulo Sale encontramos el siguiente bloque de código:

Esto no es limpio desde un punto de vista de administración de seguridad, pero es la realidad con la que tienen que lidiar las empresas que utilizan este módulo. Solo un desarrollador experimentado de Odoo es capaz de encontrar y corregir los problemas causados por esta práctica.

La intención es crear un conjunto de módulos de autoinstalación, llamados role_policy_X donde X es el nombre del módulo donde se han adaptado los métodos con dicha práctica de codificación. De esta forma, el responsable de seguridad puede configurar los roles sin depender en gran medida de habilidades de desarrollo de Odoo.

Cf. role_policy_sale como ejemplo.

Base de Datos de Demostración

Puede instalar el módulo role_policy_demo con el fin de hacerse una mejor idea de cómo funciona este módulo.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 13.0

Sustituye los grupos de seguridad estándar de Odoo por roles planos. Los administradores asignan roles a usuarios, menús, acciones y vistas, y cada rol concede explícitamente derechos de acceso, visibilidad de menús y comportamiento de vistas.

Este módulo cambia cómo se gestionan los derechos de acceso en Odoo: en lugar de los grupos de seguridad estándar, se trabaja con roles. Un rol es un conjunto plano de permisos; cada derecho debe concederse explícitamente, por lo que instalar un nuevo módulo o añadir un grupo a un menú no otorga acceso adicional automáticamente.

  • Cree roles en el nuevo menú Role, asigne a cada uno un código corto y asigne usuarios a ellos. Los usuarios también pueden habilitar un subconjunto de sus roles para evitar conflictos entre roles.
  • Para cada rol defina elementos ACL (lectura, escritura, creación, eliminación por modelo), elementos de menú, acciones de ventana, acciones de cliente, acciones de servidor y acciones de informe. Solo lo que se enumera se vuelve visible o utilizable.
  • El comportamiento de las vistas puede ajustarse por rol: las reglas de modificador de vista ocultan o eliminan elementos, hacen que los campos sean invisibles, de solo lectura u obligatorios, y los atributos de tipo de vista establecen atributos en las vistas. Las operaciones de modelo pueden deshabilitar archivar, crear, exportar o importar para un modelo.
  • Los derechos de ejecución de métodos restringen quién puede ejecutar métodos específicos, por ejemplo, publicar una factura.
  • El módulo elimina los grupos que no son roles de usuarios, menús, acciones y vistas, y oculta los menús y acciones que no están vinculados a uno de los roles del usuario. También proporciona una exportación XLSX de la política de roles completa y un asistente de importación para cargar una política desde un archivo.
  • Las etiquetas de política de seguridad están disponibles con fines de informes.

Depende de

Menús que añade

RolesRolesRole ACLsView Modifier RulesView Type AttributesView Model OperationsClient Actions
Modelos y campos (22)
  • base · amplía un modelo existente
  • ir.http · amplía un modelo existente
  • res.role · modelo nuevocode, name, active, acl_ids (ACL Items), group_id, menu_ids (Menu Items), sequence, user_ids (Users), company_id (Company), act_client_ids (Client Actions), act_report_ids (Report Actions), act_server_ids (Server Actions), act_window_ids (Window Actions), model_method_ids (Method Execution Rights), modifier_rule_ids (View Modifier Rules), model_operation_ids (View Model Operation), view_type_attribute_ids (View Type Attributes)
  • res.users · amplía un modelo existenterole_ids (Roles), enabled_role_ids (Enabled Roles), exclude_from_role_policy
  • ir.ui.menu · modelo nuevorole_ids (Roles)
  • ir.ui.view · amplía un modelo existente
  • res.groups · amplía un modelo existenterole
  • res.role.acl · modelo nuevoname, active, role_id, group_id, model_id, access_id, perm_read (Read Access), company_id, perm_write (Write Access), perm_create (Create Access), perm_unlink (Delete Access)
  • ir.model.access · amplía un modelo existente
  • ir.actions.client · amplía un modelo existenterole_ids (Roles)
  • ir.actions.report · amplía un modelo existenterole_ids (Roles)
  • ir.actions.server · amplía un modelo existenterole_ids (Roles)
  • ir.actions.actions · modelo nuevo
  • role.policy.import · modelo nuevonote (Log), sheet, warning, codepage (Code Page), file_type, policy_data (File), skip_checks, policy_fname (Filename)
  • view.modifier.rule · modelo nuevomodel (model_name), active, remove, element (Element (internal)), role_id (Role), tag_ids (Tags), view_id, model_id (Model), priority, sequence, view_type, company_id, element_ui (Element), view_xml_id (View External Identifier), modifier_readonly (Readonly), modifier_required (Required), modifier_invisible (Invisible)
  • security.policy.tag · modelo nuevocode, name, note, active, company_id (Company), modifier_ids (Tags)
  • view.type.attribute · modelo nuevoactive, attrib (Attribute), role_id (Role), view_id, priority, sequence, view_type, attrib_val (Attribute Value), company_id, view_xml_id (View External Identifier)
  • view.model.operation · modelo nuevosort, model, active, disable, role_id (Role), priority, operation, company_id
  • ir.actions.act_window · amplía un modelo existenterole_ids (Roles)
  • model.method.execution.right · modelo nuevoname, active, method (Method), role_id (Role), model_id (Model), company_id
  • report.role_policy.export_xls · modelo nuevo
  • role.policy.menu.action.common · modelo nuevo

Texto generado por IA (DeepSeek) al leer el código de la versión 13.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 1 confirmada, 8 sin información de 9 versiones.

Fuentes · Odoo 13.0

Confirmado el 2026-11-03 en la rama 13.0 de OCA/role-policy.

terminal Instalación y uso

Documentación de OCA · Odoo 13.0

Encontrarás una demostración sobre cómo configurar y usar este módulo en este screencast.

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Uso.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.