0

可能重复:
仅当用户已分配任务时才应显示任务

我知道我必须使用访问规则我对如何在这里使用全局变量感到困惑。我希望项目中的每个经理只能访问他们的项目、阶段和任务。

干杯,维沙尔

4

2 回答 2

2

OpenERP 有两种可以分配给用户组的安全限制:

  • 记录规则是应用于创建、读取、写入、取消链接操作的过滤器,并在已授予访问权限后允许按文档进行访问控制。如果文档与至少一个记录规则匹配,用户将只能对给定文档执行操作。默认策略是 ALLOW,因此如果给定模型不存在规则,则具有必要访问权限的用户可以访问该模型的所有文档。

  • 访问权限是创建、读取、写入、取消链接、是/否标志(类似于 Unix FS 权限),并允许按模型访问控制。它们说明该组的成员是否可以对特定文档模型的任何文档(例如项目任务)执行创建、读取、更新和删除操作。默认策略是 DENY,因此默认情况下,如果用户没有通过其组的访问权限之一明确有权执行任何操作,则默认情况下将拒绝任何操作。

访问权限和记录规则也可以在全局范围内定义,而无需将它们分配给特定组,在这种情况下它们适用于每个人。记录规则有一个陷阱:全局规则可能不会被其他规则放松(故意!),因此请谨慎使用。

在您的情况下,您似乎应该在项目用户组上定义一个额外的记录规则,明确限制对项目、项目任务和阶段的访问,以访问您自己的任务。您需要使用以下参数在“安全规则”菜单中创建一个新条目:

object/model: project.task
name: See own tasks only
domain: ['|',('user_id','=',False),('user_id','=',user.id)]
(means: your own tasks and unassigned ones)
apply for read: [x]
apply for write: [x]
apply for create: [x]
apply for delete: [x]
groups: Project / User

object/model: project.project
name: See own project only
domain: ['|',('user_id','=',False),('user_id','=',user.id)]
(means: your own project and unassigned ones)
apply for read: [x]
apply for write: [x]
apply for create: [x]
apply for delete: [x]
groups: Project / User


object/model: project.phase
name: See own phase only
domain: ['|',('user_id','=',False),('user_id','=',user.id)]
(means: your own phase and unassigned ones)
apply for read: [x]
apply for write: [x]
apply for create: [x]
apply for delete: [x]
groups: Project / User

记录规则的域是一个标准的 OpenERP 域,它在您尝试对其执行操作的记录上进行评估,并且可以引用包含当前用户数据的用户变量(技术上,当前用户的浏览记录) . 在中查找 search()

注意:查看现有的记录规则以了解它们首先在做什么,并确保在添加您的规则时阅读记录规则表单上的说明。请记住,如果您在访问权限和记录规则方面做错了什么,您总是可以修复管理员帐户的混乱,因为这些安全限制不适用于管理员(类似于 Unix 上的 root 用户)。

于 2012-06-29T04:52:44.993 回答
2

项目模块包括一个记录规则,它对任务完全执行,“根据用户和项目的任务”:

['|',('user_id','=',False),('user_id','=',user.id)]

您只需要在 object 上创建一个相同的记录规则(菜单设置»安全»记录规则)Project

于 2012-06-29T07:50:46.203 回答