Curso odoo (Módulos)

5. Seguridad y control de accesos

5.1. Grupos y roles

Los grupos en Odoo agrupan usuarios que comparten permisos o roles comunes. Por ejemplo, puedes tener un grupo “Administrador de Inventario” con privilegios para gestionar almacenes y productos, o un grupo “Empleado” con acceso limitado.

  • Creación de grupos:
    Generalmente, se definen en un archivo XML dentro de la carpeta security/.

    1<record id="group_library_manager" model="res.groups">
    2    <field name="name">Library Manager</field>
    3    <field name="category_id" ref="base.module_category_services"/>
    4</record>
    • id es el identificador único del grupo.
    • name es el nombre que verá el usuario.
    • category_id indica la categoría en la que aparecerá el grupo en la interfaz (por ejemplo, “Services”, “Sales”, etc.).
  • Asignación de usuarios a grupos:

    • Desde la interfaz de Odoo, puedes editar un usuario y marcar los grupos a los que pertenece.
    • También puedes hacerlo vía código o al instalar un módulo, creando un registro que vincule usuario y grupo.

Los grupos sirven como base para definir permisos de lectura, creación, edición y borrado a nivel de modelo y para aplicar reglas de registro (record rules).


5.2. Permisos en modelos (Access Control Lists - ACL)

Los permisos (ACL) determinan qué acciones puede realizar un usuario sobre un modelo en particular: leer, crear, escribir (editar) y borrar. Se configuran normalmente en un archivo .csv ubicado en la carpeta security/. Por ejemplo, library_security.xml o library_security.csv.

Ejemplo de archivo CSV de permisos

1"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
2"access_library_book_user","library.book user","model_library_book","base.group_user",1,0,0,0
3"access_library_book_manager","library.book manager","model_library_book","group_library_manager",1,1,1,1
  1. id: Identificador único de la línea de permisos.
  2. name: Nombre descriptivo.
  3. model_id:id: Modelo al que se aplican estos permisos (aquí usamos model_library_book, que debería existir en ir.model).
  4. group_id:id: El grupo de usuarios al que se le otorga estos permisos (base.group_user o group_library_manager, etc.).
  5. perm_read, perm_write, perm_create, perm_unlink: Indican permisos de lectura, edición, creación y borrado (1 = permitir, 0 = no permitir).

Nota: Si no especificas un grupo (group_id vacío), esos permisos se aplicarán a todos los usuarios, lo cual normalmente no es recomendable, excepto en casos muy concretos.


5.3. Reglas de registro (Record Rules)

Las Record Rules permiten definir restricciones más granulares, basadas en condiciones. Por ejemplo, puedes dar permiso a cada empleado para ver solo los registros que haya creado, o permitir a un gerente ver registros de todos sus subordinados.

Ejemplo de regla de registro

1<record id="rule_library_book_user_own" model="ir.rule">
2    <field name="name">Library Book: view only own</field>
3    <field name="model_id" ref="model_library_book"/>
4    <field name="domain_force">[('create_uid', '=', user.id)]</field>
5    <field name="groups" eval="[(4, ref('base.group_user'))]"/>
6</record>
  1. ir.rule: Modelo de Odoo para definir reglas de acceso por registro.
  2. model_id: Indica el modelo al que se aplica la regla (library.book).
  3. domain_force: Es una expresión tipo dominio que filtra los registros.
    • En el ejemplo: [('create_uid', '=', user.id)] significa que el usuario solo puede ver los libros que él mismo creó.
  4. groups: Lista de grupos a los que se aplica la regla (puede ser uno o varios).
    • (4, ref('base.group_user')) añade el grupo de “Usuarios” a la regla.

Importante: Las Record Rules se aplican en conjunto con los permisos ACL. Primero, el usuario necesita permisos generales (ACL), y luego las reglas de registro ajustan qué registros concretos puede ver o modificar.


Conclusión de la Parte 5

  1. Grupos y roles: Agrupan usuarios para asignar permisos de manera organizada.
  2. Permisos en modelos (ACL): Definen, a nivel de modelo, quién puede leer, crear, escribir o borrar registros.
  3. Record Rules: Aplican filtros adicionales basados en condiciones para definir qué registros puede ver o modificar cada usuario o grupo.

Con estos elementos, ya podrás proteger la información y controlar el acceso adecuadamente. En la siguiente parte, abordaremos la internacionalización (i18n), que te permitirá traducir o adaptar tu módulo a diferentes idiomas, una característica clave en entornos empresariales multilingües. ¡Continuemos!

  • Loading...