El mensaje aparece siempre en el peor momento y casi siempre por el mismo motivo: alguien ha tocado una capa de seguridad pensando que estaba tocando la otra.
Dos capas, no una
Odoo comprueba los permisos en dos pasos independientes:
- Derechos de acceso: qué puede hacer un grupo con un modelo completo. Leer contactos, crear facturas, borrar pedidos.
- Reglas de registro: dentro de ese modelo, qué registros concretos ve. Solo sus oportunidades, solo las de su equipo, solo las de su compañía.
El usuario tiene que pasar primero el control de acceso y después el de reglas. Si falla cualquiera de los dos, se deniega. Por eso dar permiso sobre el modelo no siempre basta, y por eso quitar una regla a veces no cambia nada.
El detalle que descoloca a todo el mundo
Las reglas de registro no se combinan igual según su tipo. Las reglas globales se intersecan: cada una que añades restringe más, y ninguna otra regla puede devolver el acceso que una global ha quitado. Las reglas de grupo se unen: basta con que una de ellas permita el registro. Añadir una regla global pensando que ampliará el acceso hace exactamente lo contrario.
Dos trampas frecuentes
Dejar el grupo en blanco en una línea de derechos de acceso. Una línea sin grupo asignado no significa «para nadie» ni «para los internos»: concede el acceso a los usuarios de portal y también a los públicos, es decir, a cualquier visitante de la web. Es una forma silenciosa de exponer datos.
Confiar en un campo de solo lectura como medida de seguridad. Marcar un campo como
readonly es una decisión de interfaz, no un control de seguridad: el valor sigue siendo modificable por
otras vías. Si un dato no debe cambiarse, la restricción va en la capa de permisos o en una restricción del modelo.
Multicompañía: el caso más ruidoso
Los errores en instalaciones con varias empresas suelen venir de que tres cosas no están alineadas: las reglas de registro, el campo de compañía del propio registro y las compañías permitidas del usuario. Un usuario debe tener explícitamente asignada cada compañía a la que va a acceder; que aparezca en el selector no basta.
Conviene saber además que la mayoría de reglas multicompañía incluyen una condición que deja ver también los registros sin compañía asignada, lo que los hace visibles para todo el mundo. Es útil para catálogos compartidos y sorprendente cuando no era la intención.
Cómo diagnosticarlo rápido
Ante un error de permisos, la pregunta en orden es: ¿el usuario tiene el grupo que da acceso al modelo? Si lo tiene, ¿qué reglas de registro se le aplican y cuál de ellas excluye este registro? Y si es multicompañía, ¿la compañía del registro está entre las permitidas del usuario? Casi siempre la respuesta está en la segunda pregunta.