0

我正在修改 Odoo 9.0 中的休假管理模块,并且当我创建员工用户时,我无法限制用户查看其他员工的休假。所以在我的情况下,他们能够看到每个员工离开,所以我应该给予什么样的限制,这样他们就看不到其他人的离开请求而只能看到他们自己的请求。我已经尝试向用户授予权限,但它对我不起作用是否需要对文件或权限或任何其他解决方案进行任何类型的更改。

我想限制员工查看其他人请假

如图所示,当我删除过滤器时,我能够看到每个员工的休假请求。我想从员工的角度限​​制这一点,所以我该怎么做

4

2 回答 2

0

在您的情况下,我们将为 hr.holidays 模型添加新的安全记录规则

<record model="ir.rule" id="per_employee_user_rule">
    <field name="name">Employee: see the individual Record</field>
    <field name="model_id" ref="hr_holidays.model_hr_holidays"/>
    <field name="domain_force">['|',('employee_id.user_id','=',False),('employee_id.user_id','=',user.id)]</field>
    <field name="groups" eval="[(4,ref('base.group_user'))]"/>
</record>

听说我们正在 根据员工表格获取user_id 。它完全是Odoo 员工表单视图中相关 user_id字段的一部分,仅当我们将员工登录分配给特定用户时才有用。

希望我的回答对你有帮助:)

于 2016-01-16T20:39:07.220 回答
0

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

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

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

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

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

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

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

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

于 2016-01-08T15:45:06.443 回答