odoo权限管理详解

前言:
odoo作为ERP框架,必然有不同角色的用户使用这同一系统。对于系统上面的数据,应该对不同角色设置不同的查阅修改权限。odoo框架自带了了比较完善的权限控制机制。这篇博客的实践基于odoo13,其他版本可能略有差别。
A、按odoo使用对象分,权限控制可以分为用户和组这2个层级。
B、按数据展示丰富性分,权限控制可以分为菜单、对象、记录、字段、工作流这5个主要层级。

C、按权限设置方法分,权限控制可以分为前端设置和后端设置2种方式。

A、按使用对象

在odoo的权限管理中,组是非常重要的概念。odoo提供了两种数据驱动机制来管理或限制对数据的访问,这两种机制都通过组链接到特定用户。用户可以加入任意数量的组,并且权限机制与组关联,从而批量对用户权限加以管理。

B、按数据展示丰富性

(1)菜单级别:
设置哪些组可以访问哪些菜单
(2)对象级别
设置哪些组可以访问哪些对象(表),对象的访问权限包括增、删、改、查
(3)记录级别
设置哪些组可以访问哪些记录,也就是设置表的查询条件
(4)字段级别
设置表中的字段的访问权限
(5)工作流级别
在工作流的状态迁移中,设置哪些组允许触发状态迁移

C、按权限设置方法
(1)前端设置:

权限控制前端设置
如上图,odoo的权限控制可以完全只通过前端设置实现。可以在页面上创建用户创建组,可以在组下对菜单、视图、模型访问权限、记录规则进行设置。对于不太懂二次开发的实施人员,还蛮友好的。具体可以动手试试,不难就不举例演示了,不过从前端设置,最小的数据级别只能到记录,不能到字段。

(2)后端设置

前端的所有操作,都可以通过后端写代码实现。
在security文件夹下创建huaguoxian_security.xml文件,添加到__manifest__.py文件下。

2.1 创建用户
<!--创建用户-->
    <record id="user_v" model="res.users">
        <field name="login">MR_V</field>
        <field name="password">MR_V</field>
        <field name="partner_id" ref="base.partner_admin"/>
        <field name="groups_id" eval="[(6,0,[])]"/>
        <field name="signature"><![CDATA[<span>-- <br/>MR_V</span>]]></field>
    </record>
2.2 创建组分类
<!--创建一个组分类-->
    <record id="module_access_odoo_hgs_huaguoxian" model="ir.module.category">
        <field name="name">鲜果花模块设置</field>
        <field name="sequence">1000</field>
    </record>
2.3 创建组
<!--创建组-->
    <record id="group_huaguoxian_user" model="res.groups">
        <field name="name">鲜果花权限组</field>
        <field name="category_id" ref="odoo_hgs_huaguoxian.module_access_odoo_hgs_huaguoxian"/>
        <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
        <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]" />
        <field name="comment">the user will have access to his own data</field>
    </record>

    <record id="group_huaguoxian_user2" model="res.groups">
        <field name="name">鲜果花权限组2</field>
        <field name="users" eval="[(4, ref('base.user_root'))]"/>
        <field name="category_id" ref="odoo_hgs_huaguoxian.module_access_odoo_hgs_huaguoxian"/>
        <field name="comment">the user will have access to his own data</field>
    </record>
2.4 创建记录规则
<!--创建记录规则-->
    <record model="ir.rule" id="hgs_huaguoxian_rule">
        <field name="name">鲜果花退货单记录规则</field>
        <field name="model_id" search="[('model','=','huaguoxian.delivery_return_order')]" model="ir.model"/>
        <field name="groups" eval="[(4, ref('odoo_hgs_huaguoxian.group_huaguoxian_user'))]"/>
        <field name="global" eval="True"/>
        <field name="domain_force">[('return_status','=','2')]</field>
    </record>
2.5 创建字段访问权限
  1. 在你定义的form或tree的字段中,加上eval="[(4, ref(‘base.user_root’)),把’base.user_root’ 换成你自己定义的组或者用户
  2. 在py文件中创建字段的时候,就加上eval="[(4, ref(‘base.user_root’)),把’base.user_root’ 换成你自己定义的组或者用户
2.6 工作流控制

在py文件里,做限制。

两种思路:

  1. 在/security/ir.model.access.csv文件里将模型的权限将所有模型的perm_read,perm_create,perm_write,perm_unlink都设置为1,此时,所有组所有角色都有最高权限,再在view中用domain将菜单,对象,记录或者字段隐藏起来,只展示给部分的组
    2.把perm_read,perm_create,perm_write,perm_unlink都设置为0,此时菜单、对象、记录或字段对所有组都是不可访问的。再在前端的组里不断把对象记录字段的权限加上。

两种思路都可以实现对权限的管理。思路一可以完全靠后端的代码定义达到目的。思路二可以仅通过前端的权限添加达到权限管理的目的。

实际情况可能会方法一和方法二结合。对不敏感的模型开放较多权限,后续开发中有需求再在view中设置domain,缩小权限。对较敏感的模型先不开放权限,再通过前端不断对特别的组添加权限。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Odoo 是一个开源的企业资源计划(ERP)系统,它提供了一套完整的商业应用程序,包括销售、采购、库存管理、生产管理、财务管理、人力资源管理等。下面是 Odoo 的系统架构详解: 1. 前端:Odoo 使用了基于 Web 技术的前端框架,提供了直观、用户友好的界面。前端部分主要负责与用户交互,并将用户输入的数据发送给后端进行处理。 2. Web 服务器:Odoo 支持多种 Web 服务器,如 Nginx、Apache 等。Web 服务器主要负责接收用户请求,并将请求转发给 Odoo 服务器进行处理。 3. Odoo 服务器:Odoo 服务器是整个系统的核心组件,它负责处理用户请求,并根据请求的类型进行相应的操作。Odoo 服务器采用了模块化的架构,每个功能模块都可以独立安装、升级和卸载。 4. 数据库:Odoo 使用关系型数据库来存储数据,常用的数据库包括 PostgreSQL、MySQL 等。所有的数据都存储在数据库中,包括用户信息、产品信息、订单信息等。 5. 模块:Odoo 的功能被组织成多个模块,每个模块负责一个特定的功能领域。例如,销售模块负责管理销售流程,采购模块负责管理采购流程等。用户可以根据自己的需求选择安装相应的模块。 6. 业务逻辑:Odoo 的每个模块都包含了一套完整的业务逻辑。例如,在销售模块中,用户可以创建销售订单、确认订单、生成发票等。这些业务逻辑被封装在模块中,并通过 Odoo 服务器进行处理。 7. API:Odoo 提供了一组丰富的 API,使开发人员能够通过编程的方式来与系统进行交互。开发人员可以使用 API 创建新的模块、扩展现有模块的功能,或者与其他系统进行集成。 总结来说,Odoo 的系统架构包括前端、Web 服务器、Odoo 服务器、数据库、模块、业务逻辑和 API。它提供了一个灵活、可扩展的平台,满足企业各种不同的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值