Odoo 安全组项目级实施

Odoo security group project level Implementation

我正在尝试创建一个安全组来维护 odoo10 中的项目级访问控制 我创建的组在 class 级别上工作正常,但我如何使用这些组在项目级别的 odoo 中创建访问控制,即一个组中的用户无法查看其他项目的详细信息

这适用于 odoo 8,但它也适用于 odoo 10。

我还假设您希望仅根据某些条件将组中用户的访问权限限制为同一模型中的某些记录。

访问控制只能限制对整个模型的访问(要么用户可以CRUD所有记录,要么不能CRUD任何记录),如果要限制访问一些记录,那么你还必须设置一些记录规则来进一步限制访问。

例如,假设您的 res.users 中有一个 Many2many 字段 project_ids 与您的项目模型相关(如果没有,则必须先创建它),其中包含 ID用户可以读取或写入的项目。 (由于域的工作方式,我认为您不能为此将此字段放在您的项目模型中,但我可能是错的)

假设访问控制设置正确,如果记录的id在字段project_ids 当前用户的记录(如 xml 记录,但您也可以使用 csv 文件):

<record model='ir.rule' id="project_authorized_users_rw">
    <field name="name">Only authorized users can rw</field>
    <field name="model_id" ref="EXTERNAL ID OF YOUR PROJECT MODEL GOES HERE"/>
    <field name="domain_force">[("id", "in", user.project_ids)]
    <field name="perm_read">1</field>
    <field name="perm_write">1</field>
    <field name="perm_unlink">0</field>
    <field name="perm_create">0</field>
</record>

如果这不起作用,您应该尝试:

    <field name="domain_force">[("id", "in", [p.id for p in user.project_ids])]

如果可行,这应该对每个人强制执行规则,假设访问控制规则允许用户首先访问模型,但您当然也可以将规则附加到如果你愿意,可以加入一些团体。

如果需要,您还可以通过 GUI 设置记录规则,例如通过组配置视图。

Here is the official documentation about access rights for odoo 10 for more details.