可能重复:
Tasks should show up only if the user has been assigned it
我知道我必须使用访问规则我对如何在这里使用全局变量感到困惑。我希望项目中的每个经理只能访问他们的项目,阶段和任务。
干杯, 维沙尔
答案 0 :(得分:2)
OpenERP有两种可分配给用户组的安全限制:
Record Rules是在创建,读取,写入,取消链接操作上应用的过滤器,并且一旦授予了访问权限,就允许按文档访问控制。如果文档与至少一个记录规则匹配,则用户将只能对给定文档执行操作。默认策略为ALLOW,因此如果给定模型不存在任何规则,则具有必要访问权限的用户可以访问该模型的所有文档。
Access Rights是创建,读取,写入,取消链接,是/否标志(类似于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域,它在您尝试执行操作的记录上进行评估,并且可以引用包含当前用户数据的用户变量(从技术上讲,是一个browse_record当前用户)。在
中寻找搜索()注意:查看现有的“记录规则”以查看他们首先要执行的操作,并确保在添加“记录规则”表单时阅读“记录规则”表单中的说明。请记住,如果您对访问权限和记录规则做错了,您可以随时修复管理员帐户,因为这些安全限制不适用于管理员(类似于Unix上的root用户)。
答案 1 :(得分:1)
Project模块包含一个记录规则,它完全与任务相同,“ 根据用户和项目的任务“:
['|',('user_id','=',False),('user_id','=',user.id)]
您只需要在对象Project
上创建相同的记录规则(菜单设置»安全»记录规则)。