Odoo权限控制

作者: luohuayong | 来源:发表于2017-04-12 09:09 被阅读1252次

    除了使用自定义代码管理访问外,Odoo主要以数据驱动的方式进行权限管理。这种机制通过组与特定用户相关联:用户属于一个或多个组,权限与组关联,从而将权限应用于用户。

    模型权限

    通过ir.model.access的记录行进行管理,定义模型的访问权限。每个访问权限项对应一个模型,组(一个或者没有)以及相应的权限。
    模型权限是加法的,对于给定的模型,用户的访问权限是用户所在的全部组的权限的集合。例如:用户属于两个组,一个组有写入权限,另外一个组有删除权限,则用户拥有写入和删除权限。
    如果模型权限未指定组,则访问权限适用于所有用户,否则仅适用于给定组的成员。可用的权限包括:
    perm_create:创建
    perm_read:阅读和搜索
    perm_write:更新已有记录
    perm_unlink:删除已有记录

    记录行规则

    记录行规则是对记录行的操作权限(创建、读取、更新和删除)控制。在应用了模型权限后再应用记录行规则。记录行规则的定义包括:

    • 规则对应的模型权限
    • 规则适用的一组权限(例如,如果设置了perm_read,则只有在读取记录时才会检查该规则)
    • 规则适用的一组用户组,如果没有指定组,则该规则是全局的
    • 规则适用的记录行,用domain来定义,符合domain规则的可访问,不符合的则不能访问。这里的domain有两个上下文可以使用:user是当前用户的记录行,time是时间模块。
      全局规则(规则中未指定组)和组规则(规则中指定了组)的使用方式截然不同:
    • 全局规则是减法的,必须全部匹配才能访问记录
    • 组规则是加法的,其中任何一个匹配(并且全部的全局规则都匹配)就能访问记录
      这意味着第一个组规则限制记录的访问,但是其它的所有组规则都在扩展访问。而全局规则是每一个规则都在限制记录的访问(或者不起作用)。

    警告
    记录行规则和模型权限对于管理员用户无效,管理员用户拥有完全权限

    字段权限
    这个是在7.0版本之后新增的。ORM的Field有一个groups属性,这个属性可以定义一个组的列表(以逗号分隔的标识符)。如果当前用户不是这个组列表中的任一组成员,那当前用户不能访问这个字段:

    • 受限制的字段将在视图请求中被自动移除
    • 受限制的字段将在fields_get()请求中被移除
    • 如果尝试(显示的)读取或写入受限制字段会导致访问错误

    工作流流转规则

    工作流流转可以限制在一个特定的组中,组外的用户无法触发转换。

    相关文章

      网友评论

      • 87d26d62014d:在odoo中文社区发现了你写的文档,加油

      本文标题:Odoo权限控制

      本文链接:https://www.haomeiwen.com/subject/xaksattx.html