我想创建一个允许其用户添加新用户的组,但只能使用他们自己拥有的Allowed Companies
和权限。当前,Administration/Access Rights
组确实为用户提供了创建新用户的能力,但是它并没有以任何方式限制他们可以分配的权限。
我尝试修改Access Rights
组的权限。我在该组中找到了对象Company
的记录规则,并对此进行了修改:
[(1, '=', 1)]
更改为:
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
我基本上从其他限制用户使用自己公司的规则中复制了它。但是,当该组中的用户尝试访问任何用户时,它崩溃并给出错误:
ValueError: Invalid field 'company_id' in leaf "<osv.ExtendedLeaf: ('company_id', '=', False) on res_company (ctx: )>"
我还将两个管理组(Access Rights
和Settings
)都移到了另一个应用程序Extra Rights
中。这是我限制用户可以看到的选项的唯一方法。这样一来,如果用户有权访问用户编辑,他就不能简单地在其中进行任何更改(例如给自己Setting
权限。我真的不明白为什么Odoo选择了这种行为。
重现此问题的步骤: -创建多个公司(在此示例中,为CompanyA,CompanyB,CompanyC) -添加具有“管理/访问权限”组的用户,并将其分配给某些公司(并非所有公司-例如公司A和B)
当前行为: 具有给定组的用户能够修改(对于所有用户)“允许的公司”字段并添加他无权访问的公司-在此示例中,他可以使用CompanyC扩展他的“允许的公司”。
预期的行为: 具有给定组的用户可以修改所有用户的“允许的公司”字段,但不能分配他本人没有的“允许的公司”。