如何让用户只能在odoo中访问自己的记录?

时间:2015-12-17 06:03:01

标签: python xml openerp

我已经创建了组以提供访问权限,一切似乎都很好但我想要自定义访问 - 模块问题的权限。当特定组的用户登录时,我希望该用户只能创建/编辑自己的问题而无法看到其他用户的问题。请帮帮我!! 感谢

2 个答案:

答案 0 :(得分:2)

提供访问规则是解决方案的一部分。如果你看一下"访问控制列表"在"设置>技术>安全>访问控制列表" ,您可以看到组Hr Employee只具有模型hr.employee的读访问权限。因此,首先您必须提供写访问权限,以便为组Employee建模hr.employee。在您允许对hreemployee模型组Employee进行写访问之后,

  • 从设置>创建新的记录规则技术>安全>记录规则名为User_edit_own_employee_rule(如您所愿)。
  • 为此组提供域名User_edit_own_employee_rule为[(' user_id',' =',user.id)]。此域名应该适用于读写。即;通过检查"申请阅读"和#34;申请写作"布尔字段。
  • 创建另一个名为User_edit_own_employee_rule_1
  • 的记录规则
  • 为此组提供域名User_edit_own_employee_rule为[(' user_id','!=',user.id)]。此域名应该适用于只读。即;检查"申请阅读"。

现在,通过为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)]
  • 群组:人力资源/员工

我希望这会对你有所帮助。

答案 1 :(得分:0)

用户可以访问自己的项目问题记录,因此我们将在视图xml文件中添加新记录安全规则。 基本上记录规则是安全组的一部分,因此我们将在以下方式内进行:

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

安全记录规则完全取决于 domain_force model_id 属性。它们在特定模型的安全记录中提供关键角色。 根据用户要求,我们修改了两个属性以及每个记录规则的唯一ID,并尝试访问用户安全组中的用户记录以进行特定用户的登录。

您可以使用菜单导航为project.issue模型

创建新的安全规则

设置&gt;技术&gt;安全&gt;记录规则

您可以根据需要添加上面给出的新规则。

我希望我的回答对您有所帮助:)。