7

我只希望我分配任务的人看到项目模块中的任务。我不希望项目的其他用户看到这个人的任务。

然而,目前任何具有用户访问权限的用户都可以查看所有任务,即使他们没有被分配。

有解决办法吗?

4

5 回答 5

18

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

  • 访问权限是 CRUD 是/否标志(类似于 Unix FS 权限),并允许按模型访问控制。它们说明该组的成员是否可以对特定文档模型的任何文档(例如项目任务)执行创建、读取、更新和删除操作。默认策略是 DENY,因此默认情况下,如果用户没有通过其组的访问权限之一明确有权执行任何操作,则默认情况下将拒绝任何操作。
  • 记录规则是应用于 CRUD 操作的过滤器,一旦已授予访问权限,就允许对每个文档进行访问控制。如果文档与至少一个记录规则匹配,用户将只能对给定文档执行操作。默认策略是 ALLOW,因此如果给定模型不存在规则,则具有必要访问权限的用户可以访问该模型的所有文档。

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

在您的情况下,您似乎应该在项目用户组上定义一个额外的记录规则,明确将项目任务的访问权限限制为您自己的任务(可能还有那些尚未分配的任务)。您需要使用以下参数在“安全规则”菜单中创建一个新条目:

  • 对象/模型:project.task
  • 姓名:See own tasks only
  • 领域:['|',('user_id','=',False),('user_id','=',user.id)]
    • (意味着:您自己的任务和未分配的任务)
  • 申请阅读:[x]
  • 申请写:[x]
  • 申请创建:[x]
  • 申请删除:[x]
  • 团体:Project / User

记录规则是一个标准的domainOpenERP/Odoo 域,它在您尝试执行操作的记录上进行评估,并且可以引用user包含当前用户数据的变量(技术上,browse_record当前用户的 a)。该文档有一个描述domain

如果您希望允许特殊用户(例如项目经理)查看系统中的所有任务,您可以通过向项目经理组添加另一个允许访问所有任务的规则来放松此规则。有一个特殊的“域过滤器”,意思是“允许所有”,有助于放宽另一个更严格的规则:[(1,'=',1)].

注意 1:查看现有的记录规则以了解它们首先在做什么,并确保在添加您的规则时阅读记录规则表单上的说明。要记住的一件重要事情是特定于组的规则与OR运算符相结合。因此,如果您添加我上面描述的规则,您可能看不到任何限制效果,因为其他特定于组的规则仍在授予访问权限。您可能必须禁用它们、编辑它们或更改它们应用到的用户组,以获得您想要的确切效果。

注意 2:请记住,如果您对访问权限和记录规则做错了什么,您可以随时修复admin帐户的混乱,因为这些安全限制不适用于admin(类似于rootUnix 上的用户)。

于 2012-06-08T10:57:24.950 回答
2

注意:在 OpenERP 7 中,您必须修改或禁用名为的默认规则

项目/任务:员工:公共、门户、员工或关注或分配

让您的规则发挥作用。

于 2013-12-31T16:23:59.530 回答
1

创建一个新的安全规则,选择对象为“ project.task ”,将域过滤器设置为[("user_id","=",user.id)]。无需添加任何组,因此它将是全局的。而已!

于 2014-10-21T09:16:40.653 回答
1

我的问题有点复杂。我想让用户只能看到他们分配的任务,而有些用户也可以看到其余的。

在 Odoo 11 中,我发现标准项目用户继承Employees \ Employee,而后者又具有Project/Task: employees: follow required for follower-only projects让用户查看其他任务的规则。

我做了什么:

  1. 创建一个新组->重复Project / Users

  2. 从odony的回答中实施了规则->['|',('user_id','=',False),('user_id','=',user.id)]

  3. Project/Task: employees: follow required for follower-only projects从中删除记录规则Employees / Employee并将其添加到Project / Users

现在我可以决定谁是项目用户,谁可以看到项目的所有任务,谁是工人,谁只能看到分配给他们的任务。

于 2020-02-20T05:11:01.320 回答
0

正如@user1534055 在 openERP 7 中已经指出的那样,它有点不同。

找到名为的规则Project/Task: employees: public, portal, employee or following or assigned

查找关联的记录规则

编辑它并('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']), '&',从规则定义中删除,然后点击保存。

在此之后任务将仅对已分配的人员可见。

于 2014-01-10T09:00:36.563 回答