odoo中的权限和规则

发布时间 2023-11-03 13:33:40作者: *感悟人生*

在Odoo中,安全性是通过一系列的权限规则来管理的,这些权限和规则定义了用户可以看到什么数据和可以进行哪些操作。
这些安全规则主要是通过XML和CSV文件来配置的。

 

XML文件

XML文件通常用于定义记录规则(Record Rules)和访问控制列表(Access Control Lists, ACLs)。

  1. 记录规则(Record Rules):

    • 记录规则限制了用户可以读取、创建、写入或删除哪些记录。
    • 每个记录规则都有一个域,它是一个表达式,定义了哪些记录符合该规则。
    • 记录规则可以是全局的,也可以针对特定的用户组。
    • 记录规则在XML中通常通过<record>标签定义,其model属性设置为ir.rule
  2. 访问控制列表(ACLs):

    • ACLs定义了用户组对于模型(如客户、销售订单等)的操作权限,包括读取、创建、写入和删除。
    • 权限通常分为四种:读(read)、写(write)、创建(create)和删除(unlink)。
    • ACLs在XML中通常通过<record>标签定义,其model属性设置为ir.model.access

XML文件中的安全性定义示例:

  

<!-- 定义一个用户组 -->
<record id="group_custom_user" model="res.groups">
    <field name="name">Custom User</field>
</record>

<!-- 给用户组定义访问权限 -->
<record id="access_custom_model_user" model="ir.model.access">
    <field name="name">custom.model.access.user</field>
    <field name="model_id" ref="model_custom_model"/>
    <field name="group_id" ref="group_custom_user"/>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="False"/>
    <field name="perm_create" eval="False"/>
    <field name="perm_unlink" eval="False"/>
</record>

<!-- 定义记录规则 -->
<record id="custom_model_rule" model="ir.rule">
    <field name="name">Custom Model Rule</field>
    <field name="model_id" ref="model_custom_model"/>
    <field name="domain_force">[('user_id', '=', user.id)]</field>
    <field name="groups" eval="[(4, ref('group_custom_user'))]"/>
</record>

 

 

CSV文件

CSV文件主要用于初始化和更新模型的访问权限。这些文件更简单,通常包含模型的名称、权限和用户组的映射。

CSV文件中的列通常包括:

  • id: 权限的唯一标识符。
  • name: 权限的名字,通常与模型名称相关。
  • model_id/id: 关联的模型的外部ID。
  • group_id/id: 关联的用户组的外部ID。
  • perm_read: 读权限(1为允许,0为不允许)。
  • perm_write: 写权限。
  • perm_create: 创建权限。
  • perm_unlink: 删除权限。

CSV文件中的安全性定义示例:

id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
access_custom_model_user,custom.model.access.user,model_custom_model,group_custom_user,1,0,0,0

在这个CSV文件示例中,model_custom_model对应于自定义模型的外部ID,group_custom_user对应于自定义用户组的外部ID。权限被设置为只读。

 

 

总结

在Odoo中,XML文件通常用于创建和维护复杂的安全规则,而CSV文件则用于初始化和更新访问权限。开发人员可以选择最适合项目需求的方式。通常,CSV文件在模块的数据文件夹中用于初始数据加载,而XML文件则用于视图、动作和安全规则的定义。在实际的开发过程中,这两种文件往往会同时