【问题标题】:Record Rule to allow a User to update their own Employee record without belonging to Officer group记录规则,允许用户更新自己的员工记录而不属于官员组
【发布时间】:2013-10-17 01:58:38
【问题描述】:

我正在尝试在 OpenERP 7.0 中定义一个记录规则,该规则允许不在官员组中的用户仅更改他们自己的员工记录,同时仍保留现有的全局规则,允许官员组中的用户拥有完全权限。我已经使用以下详细信息设置了自定义规则:

  • 姓名:User_edit_own_employee_rule
  • 对象:员工
  • 申请阅读:勾选
  • 申请写:勾选
  • 规则定义:[('user_id', '=', user.id)]

但是,这一切似乎只是消除了用户读取除自己之外的任何员工记录的能力。据我所知,我需要将此规则与逻辑 OR 运算符与适用于 Office 组中用户的组规则结合起来。任何人都可以给我任何关于如何做到这一点的指示吗?

编辑:我想要的行为是这样的:

  • 所有用户(员工组)都可以搜索和阅读所有员工记录。
  • Employee 组中的用户可以编辑自己的员工记录,但不能编辑其他人。
  • Officer 组中的用户可以编辑所有员工记录(这是 HR 模块的默认行为)。

到目前为止尝试过:

  • 修改上述记录规则 (User_edit_own_employee_rule) 以仅适用于写入操作,而不适用于读取操作(用户可以查看所有员工记录,但不能编辑任何记录,包括他们自己的记录)。
  • 修改hr.employee系统用户访问控制规则以允许写入操作(用户现在可以编辑所有员工记录)。

我得到的一个线索是,使用 API 在 shell 中返回员工的 user_id,OpenERP 返回[5, 'Joe Bloggs']。我想知道我的记录规则是否正确地查询了外键关系?

【问题讨论】:

    标签: openerp


    【解决方案1】:

    提供访问规则是解决方案的一部分。如果您查看“设置 > 技术 > 安全 > 访问控制列表”中的“访问控制列表”,您可以看到 Hr Employee 组对模型 hr.employee 仅具有读取权限。因此,首先您还必须为 Employee 组的模型 hr.employee 提供写访问权限。 在您允许对模型 hr.employee 的组 Employee 的写入权限后,

    • 从设置 > 技术 > 安全 > 记录规则创建一个名为 User_edit_own_employee_rule 的新记录规则(如您所愿)。
    • 为此组 User_edit_own_employee_rule 提供域为 [('user_id', '=', user.id)]。并且这个域应该申请读写。 IE;通过选中“申请读取”和“申请写入”布尔字段。
    • 创建另一个名为 User_edit_own_employee_rule_1 的记录规则
    • 为此组 User_edit_own_employee_rule 提供域为 [('user_id', '!=', user.id)]。并且这个域应该申请只读。 IE;勾选“申请阅读”。

    现在通过为 Employee 组创建两条记录规则,我们可以提供读取和写入他/她自己记录的访问权限,但只能读取其他员工记录。

    让我总结一下:

    在访问控制列表中为 Employee 组的 hr.employee 模型提供写入访问权限。创建两条记录规则:

    User_edit_own_employee_rule:

    • 姓名: User_edit_own_employee_rule
    • 对象:员工
    • 申请阅读:勾选
    • 申请写作:已选中
    • 规则定义: [('user_id', '=', user.id)]
    • 组:人力资源/员工

    User_edit_own_employee_rule_1:

    • 姓名: User_edit_own_employee_rule_1
    • 对象:员工
    • 申请阅读:勾选
    • 申请写作:未选中
    • 规则定义: [('user_id', '!=', user.id)]
    • 组:人力资源/员工

    希望这会有所帮助....

    【讨论】:

    • 哦,干得好!感谢您提供全面编写的解决方案。我的普通用户仍然会看到为所有用户呈现的“编辑”按钮,但是当他们尝试为自己以外的人保存更改时 - 他们会收到警告并且失败!完美的。请注意,如果您也想在那里发布答案,我也在OpenERP help forum 上问过这个问题。
    • 您好,我们如何做到这一点“限制销售经理只能访问与客户相关的会计对象(无法访问供应商发票、退款、采购收据和供应商付款)”
    • 嗨,通过应用这些规则,我面临另一个问题。员工无法请假....请帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多