Permisos de acceso y reglas de registro

El uso de Odoo define el problema sobre quién puede ver y hacer qué dentro del sistema con la intención de proteger la información sensible y organizar el trabajo de cada usuario, manteniendo la seguridad y la eficiencia. Como solución a este problema, Odoo introduce dos herramientas fundamentales: los permisos de acceso y las reglas de registro. En este blog explicaremos qué son, cómo funcionan y cómo configurarlos correctamente.

Daniel Sánchez

7/8/20255 min read

¿Qué son los permisos de acceso y las reglas de registro?

Son restricciones definidas por modelo que controlan quién puede hacer qué dentro del sistema, es decir, qué modelos puede ver, crear, modificar o eliminar un usuario, dependiendo del grupo al que pertenezca el usuario.

Diferencias

Aunque las reglas de acceso y de registro tienen el mismo funcionamiento, estas se diferencian por una característica especial.

Los permisos de acceso otorgan acceso a un modelo completo para un conjunto determinado de operaciones. Si ningún permiso de acceso coincide con una operación en un modelo para un usuario (a través de su grupo), este no tiene acceso.

Las reglas de registro son condiciones que deben cumplirse para que se permita una operación. Se evalúa registro por registro, según los permisos de acceso.

¿Cómo se crean las reglas de acceso y de registro dentro de Odoo?

Odoo ofrece distintas formas para crear las reglas de acceso y de registro, aunque las más comunes son utilizando código dentro del módulo y crearlas dentro del sistema.

Permisos de acceso - Archivos CSV

Esta es la forma más común de crear un permiso de acceso. Dentro de los archivos del módulo se añade (si es que no existe) una carpeta llamada security, la cual contiene un archivo llamado ir.model.access.csv, el mismo que estará mapeado dentro del atributo data de nuestro archivo manifest.py dentro del módulo.

Dentro del módulo de ventas existe el siguiente permiso de acceso:

La estructura de los valores por columna es la siguiente:

  • 1ra columna (id): id del permiso de acceso. Identificador externo que se puede utilizar para referirse al registro sin la necesidad de conocer su id en base de datos.

  • 2da columna (name): nombre del permiso de acceso.

  • 3er columna (model_id:id): Indica el modelo u objeto al que se aplicará el permiso. En este caso, es para el modelo de ventas (sale.order)

  • 4ta columna: El grupo al que aplica el permiso.
    En este caso, aplica al grupo Usuario: solo mostrar documentos propios (sales_team.group_sale_salesman)

  • 5ta columna: Permiso para leer. Como se tiene el valor 1, el usuario con este grupo sí podrá leer el registro.

  • 6ta columna: Permiso para actualizar. Como se tiene el valor 1, el usuario con este grupo sí podrá actualizar el registro.

  • 7ma columna: Permiso para crear. Como se tiene el valor 1, el usuario con este grupo sí podrá crear nuevos registros.

  • 8va columna: Permiso para eliminar. Como se tiene el valor 0, el usuario con este grupo no podrá eliminar registros existentes.

Considerando el permiso anterior, todo usuario que tenga el grupo Usuario: solo mostrar documentos propios no tiene permitido eliminar registros del modelo de ventas (sale.order).

Dentro de Odoo, agregamos al usuario actual el permiso antes mencionado.

De esta forma, notamos cómo Odoo no nos permite eliminar registros de ventas, cumpliendo así con el permiso de acceso anterior.

Hagamos algo más interesante. Al permiso anterior, modifiquemos el permitir actualizar los registros de ventas. Esto lo hacemos de la siguiente manera:

Notamos que ahora no puedo editar nada dentro de las ventas.

Los permisos de acceso también se pueden editar desde Odoo a través de la sección Permisos de acceso.

Reglas de registro - Archivos XML

La forma más común de crearlas es a través de archivos XML dentro del módulo. Dentro del módulo de compras tenemos el siguiente ejemplo de una regla de registro:

La regla anterior indica que los usuarios solo pueden ver las compras cuya compañía esté dentro de las compañías activas dentro del Odoo. La intención es que los usuarios solo puedan tener acceso a las compras de la compañía a las que tienen acceso. Esto se define a través del dominio.

A esta regla también se le puede indicar sobre qué podemos hacer con los registros. A esta regla añadimos los siguientes campos:

Los cuatro campos que comienzan con la palabra perm_ otorgan permiso para eliminar, actualizar, leer y crear registros sobre las compras, respectivamente. En este caso, se restringe el poder leer compras que aplican sobre el dominio anterior; por lo tanto, el usuario tiene permiso para leer todas las compras de todas las compañías. Al actualizar el módulo, notamos que, en efecto, podemos leer compras de otras compañías a pesar de tener activa otra compañía.

Si volvemos a actualizar el archivo XML de la siguiente manera:

Ahora tenemos permiso para leer solo las compras de la compañía activa, según el dominio establecido. Comprobamos esto al actualizar el módulo:

Las reglas de registro también se pueden actualizar directamente desde Odoo.

Consejos rápidos:

  • Define solo los permisos necesarios para cada grupo de usuarios. Evita dar acceso de eliminar a menos que sea imprescindible.

  • Usa grupos bien estructurados (por roles o departamentos) y evita asignar permisos directamente a usuarios individuales.

  • Después de crear o modificar permisos, haz pruebas con usuarios de prueba para confirmar que solo tienen acceso a lo necesario.

  • Revisa que un usuario no herede permisos contradictorios por pertenecer a varios grupos.

  • Usa reglas de registro junto con permisos de acceso; una sin la otra puede dejar huecos de seguridad.

En Exdoo podemos desarrollar cualquier módulo para Odoo en México, implementamos tu ERP con consultores experimentados no solo en Odoo sino en procesos de negocios, tenemos 10 años trabajando solamente con Odoo en México y otros países.