Odoo v8:如何限制用户访问联系人
Odoo v8: How to limit user access to contacts
我正在使用 Odoo v8,需要一种方法来防止某些用户((最好)在销售团队或用户组中)访问某些联系人(分配给不同的销售团队)或联系人全部.
我试图通过 Record rules
实现这一点,但似乎没有成功。
您可以为组 用户添加规则。我刚刚成功了,效果很好。
用户和用户角色是涉及 OpenERP 内部安全的关键点。 OpenERP 提供了几种关于用户角色的安全机制,所有这些都在 OpenERP 服务器中实现。它们在最低的服务器级别实现,即 ORM 引擎。 OpenERP区分了三个不同的概念:
- 用户:由其登录名和密码标识的人。请注意,一家公司的所有员工不一定都是 OpenERP 用户;用户是访问应用程序的人。
- 组:一组具有某些访问权限的用户。组将其访问权限授予属于该组的用户。例如:销售经理、会计等
- 安全规则:定义给定组授予其用户的访问权限的规则。安全规则附加到给定资源,例如发票模型。
安全规则附加到组。用户被分配到几个组。这赋予用户附加到其组的权限。因此,通过管理用户组并添加或修改附加到这些组的安全规则来控制用户角色。
用户
用户代表使用 OpenERP 的自然人。他们通过登录名和密码进行识别,他们使用 OpenERP,他们可以编辑自己的偏好,……默认情况下,用户没有访问权限。我们为用户分配的组越多,他或她获得执行某些操作的权限就越多。一个用户可能属于多个组。
用户组
组决定了对不同资源的访问权限。一个用户可能属于多个组。如果他属于几个组,我们总是使用对选定资源具有最高权限的组。一个组可以继承另一个组的所有权限
权限
安全规则附加到组。您可以在组级别分配多个安全规则,每个规则属于以下类型之一:
- access rights are global rights on an object,
- record rules are records access filters,
- fields access right,
- workflow transition rules are operations rights.
您还可以定义全局规则,即它们适用于所有用户,不分青红皂白地适用于他们所属的组。例如,multi-company 规则是全局的;用户只能看到他或她所属公司的发票。
关于配置,很难有适合所有应用程序的默认通用配置。因此,和SAP一样,OpenERP默认是pre-configured和best-practices.
访问权限
访问权限是定义用户对特定对象的访问权限的规则。这些全局权限是按文档类型或模型定义的。权限遵循 CRUD 模型:创建、读取(搜索)、更新(写入)、删除。例如,您可以定义发票创建规则。默认情况下,向对象添加权限会赋予该特定对象的所有记录的权限。
记录规则
访问对象时,根据记录规则过滤记录。因此,记录规则或访问过滤器是限制组可以访问的对象记录的过滤器。记录规则是每条记录必须满足才能被创建、读取、更新(写入)或删除的条件。不符合约束条件的记录被过滤掉。
例如,您可以创建一个规则来限制一个组,使该组的用户将看到他或她被标记为销售员的商机。规则可以是 salesman = connected_user。使用该规则,将仅显示符合该规则的记录。
字段访问权限
版本 7.0 中的新增内容。
OpenERP 现在支持现场级别的真正访问控制,而不仅仅是在视图方面。以前已经可以在 <field>
元素(或实际上大多数视图元素)上设置 groups 属性,但仅具有装饰效果:该元素在客户端不可见,但仍然完全可用于 read/write 在 RPC 级别访问。
从 OpenERP 7.0 开始,现有行为在视图级别上得到保留,但新的组属性在所有模型字段上可用,在每个字段上引入 model-level 访问控制。语法与 view-level 属性相同:
_columns = {
'secret_key': fields.char('Secret Key', groups="base.group_erp_manager,base.group_system")
}
与view-level组属性有一个主要区别:在模型级别限制访问实际上意味着该字段对于不属于授权组的用户将完全不可用:
- 受限字段将从所有相关视图中完全删除,而不仅仅是隐藏。记住这一点很重要,因为这意味着字段值在客户端根本不可用,因此不可用,例如on_change 个电话。
- 受限字段将不会作为调用 fields_get() 或 fields_view_get() 的一部分返回,这是为了避免它们出现在可用于高级搜索过滤器的字段列表中, 例如。这不公关通过直接查询 ir.model.fields 获取模型的字段列表,这很好。
- 任何直接读取或写入受限字段值的尝试都将导致 AccessError 异常。
- 由于上一项,受限字段将无法在搜索过滤器(域)或任何需要读取或写入访问权限的内容中使用。
- 很可能在模型和视图级别为同一字段设置组属性,即使值不同。两者都将发挥作用,model-level 限制优先,并在出现限制时完全删除该字段。
Note
The tests related to this feature are in openerp/tests/test_acl.py.
Warning
At the time of writing the implementation of this feature is partial
and does not yet restrict read/write RPC access to the field. The
corresponding test is written already but currently disabled.
我正在使用 Odoo v8,需要一种方法来防止某些用户((最好)在销售团队或用户组中)访问某些联系人(分配给不同的销售团队)或联系人全部.
我试图通过 Record rules
实现这一点,但似乎没有成功。
您可以为组 用户添加规则。我刚刚成功了,效果很好。
用户和用户角色是涉及 OpenERP 内部安全的关键点。 OpenERP 提供了几种关于用户角色的安全机制,所有这些都在 OpenERP 服务器中实现。它们在最低的服务器级别实现,即 ORM 引擎。 OpenERP区分了三个不同的概念:
- 用户:由其登录名和密码标识的人。请注意,一家公司的所有员工不一定都是 OpenERP 用户;用户是访问应用程序的人。
- 组:一组具有某些访问权限的用户。组将其访问权限授予属于该组的用户。例如:销售经理、会计等
- 安全规则:定义给定组授予其用户的访问权限的规则。安全规则附加到给定资源,例如发票模型。
安全规则附加到组。用户被分配到几个组。这赋予用户附加到其组的权限。因此,通过管理用户组并添加或修改附加到这些组的安全规则来控制用户角色。
用户
用户代表使用 OpenERP 的自然人。他们通过登录名和密码进行识别,他们使用 OpenERP,他们可以编辑自己的偏好,……默认情况下,用户没有访问权限。我们为用户分配的组越多,他或她获得执行某些操作的权限就越多。一个用户可能属于多个组。
用户组
组决定了对不同资源的访问权限。一个用户可能属于多个组。如果他属于几个组,我们总是使用对选定资源具有最高权限的组。一个组可以继承另一个组的所有权限
权限
安全规则附加到组。您可以在组级别分配多个安全规则,每个规则属于以下类型之一:
- access rights are global rights on an object,
- record rules are records access filters,
- fields access right,
- workflow transition rules are operations rights.
您还可以定义全局规则,即它们适用于所有用户,不分青红皂白地适用于他们所属的组。例如,multi-company 规则是全局的;用户只能看到他或她所属公司的发票。
关于配置,很难有适合所有应用程序的默认通用配置。因此,和SAP一样,OpenERP默认是pre-configured和best-practices.
访问权限
访问权限是定义用户对特定对象的访问权限的规则。这些全局权限是按文档类型或模型定义的。权限遵循 CRUD 模型:创建、读取(搜索)、更新(写入)、删除。例如,您可以定义发票创建规则。默认情况下,向对象添加权限会赋予该特定对象的所有记录的权限。
记录规则
访问对象时,根据记录规则过滤记录。因此,记录规则或访问过滤器是限制组可以访问的对象记录的过滤器。记录规则是每条记录必须满足才能被创建、读取、更新(写入)或删除的条件。不符合约束条件的记录被过滤掉。
例如,您可以创建一个规则来限制一个组,使该组的用户将看到他或她被标记为销售员的商机。规则可以是 salesman = connected_user。使用该规则,将仅显示符合该规则的记录。
字段访问权限
版本 7.0 中的新增内容。
OpenERP 现在支持现场级别的真正访问控制,而不仅仅是在视图方面。以前已经可以在 <field>
元素(或实际上大多数视图元素)上设置 groups 属性,但仅具有装饰效果:该元素在客户端不可见,但仍然完全可用于 read/write 在 RPC 级别访问。
从 OpenERP 7.0 开始,现有行为在视图级别上得到保留,但新的组属性在所有模型字段上可用,在每个字段上引入 model-level 访问控制。语法与 view-level 属性相同:
_columns = {
'secret_key': fields.char('Secret Key', groups="base.group_erp_manager,base.group_system")
}
与view-level组属性有一个主要区别:在模型级别限制访问实际上意味着该字段对于不属于授权组的用户将完全不可用:
- 受限字段将从所有相关视图中完全删除,而不仅仅是隐藏。记住这一点很重要,因为这意味着字段值在客户端根本不可用,因此不可用,例如on_change 个电话。
- 受限字段将不会作为调用 fields_get() 或 fields_view_get() 的一部分返回,这是为了避免它们出现在可用于高级搜索过滤器的字段列表中, 例如。这不公关通过直接查询 ir.model.fields 获取模型的字段列表,这很好。
- 任何直接读取或写入受限字段值的尝试都将导致 AccessError 异常。
- 由于上一项,受限字段将无法在搜索过滤器(域)或任何需要读取或写入访问权限的内容中使用。
- 很可能在模型和视图级别为同一字段设置组属性,即使值不同。两者都将发挥作用,model-level 限制优先,并在出现限制时完全删除该字段。
Note
The tests related to this feature are in openerp/tests/test_acl.py.
Warning
At the time of writing the implementation of this feature is partial and does not yet restrict read/write RPC access to the field. The corresponding test is written already but currently disabled.