You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo中限制Employee组仅访问Workers模型HR经理视图的技术问题

解决Odoo中细粒度视图/菜单项权限控制问题

我明白你的需求——已经给Employee组开放了Workers对象的读写权限,但想让他们只能访问HR经理对应的视图和菜单项,完全看不到Auditor相关的入口。下面是具体的实现方案,都是Odoo原生的权限控制逻辑,不用额外开发复杂模块:


核心思路

Odoo的权限是分层控制的:对象级权限(ir.model.access)是基础,而菜单项、动作、视图都可以单独设置groups_id字段,实现更细粒度的访问限制。我们需要给Auditor相关的菜单项、动作、视图单独绑定权限组,把Employee组排除在外。


具体步骤

1. 确认权限组

首先确保你已经有对应的专属组:比如group_hr_manager(Odoo原生HR经理组)和自定义的group_auditor(审计组)。如果没有,可以在模块的security目录下创建组的XML:

<!-- security/groups.xml -->
<record id="group_auditor" model="res.groups">
    <field name="name">Auditor</field>
    <field name="category_id" ref="base.module_category_human_resources"/>
</record>

2. 控制菜单项可见性

修改你的菜单项XML,给Auditor菜单项指定仅允许Auditor/HR经理组访问,HR经理菜单项保留Employee组的权限:

<!-- views/menu.xml -->
<!-- HR经理视图菜单项:允许Employee和HR经理访问 -->
<menuitem name="HR Manager Workers" 
          id="menu_hr_manager_workers" 
          parent="base.menu_human_resources"
          action="action_hr_manager_workers" 
          groups="base.group_user, base.group_hr_manager"/>

<!-- Auditor视图菜单项:仅允许Auditor组访问 -->
<menuitem name="Auditor Workers" 
          id="menu_auditor_workers" 
          parent="base.menu_human_resources"
          action="action_auditor_workers" 
          groups="your_module.group_auditor"/>

注:base.group_user是Odoo默认的内部用户组,如果你的Employee组是自定义的,替换成你自己的组ID即可。

3. 限制视图访问权限

即使用户通过URL直接访问视图,也要确保他们没有权限打开。给Auditor视图绑定专属组:

<!-- views/workers_views.xml -->
<!-- HR经理视图 -->
<record id="view_hr_manager_workers_tree" model="ir.ui.view">
    <field name="name">workers.hr.manager.tree</field>
    <field name="model">workers</field>
    <field name="arch" type="xml">
        <tree>
            <!-- 你的HR经理视图内容 -->
        </tree>
    </field>
    <field name="groups_id" eval="[(4, ref('base.group_user')), (4, ref('base.group_hr_manager'))]"/>
</record>

<!-- Auditor视图:仅允许Auditor组访问 -->
<record id="view_auditor_workers_tree" model="ir.ui.view">
    <field name="name">workers.auditor.tree</field>
    <field name="model">workers</field>
    <field name="arch" type="xml">
        <tree>
            <!-- 你的Auditor视图内容 -->
        </tree>
    </field>
    <field name="groups_id" eval="[(4, ref('your_module.group_auditor'))]"/>
</record>

4. 限制动作权限

最后,给对应的窗口动作也设置权限,避免用户通过动作URL绕开菜单项限制:

<!-- views/actions.xml -->
<!-- HR经理动作 -->
<record id="action_hr_manager_workers" model="ir.actions.act_window">
    <field name="name">HR Manager Workers</field>
    <field name="res_model">workers</field>
    <field name="view_mode">tree,form</field>
    <field name="view_id" ref="view_hr_manager_workers_tree"/>
    <field name="groups_id" eval="[(4, ref('base.group_user'))]"/>
</record>

<!-- Auditor动作:仅允许Auditor组访问 -->
<record id="action_auditor_workers" model="ir.actions.act_window">
    <field name="name">Auditor Workers</field>
    <field name="res_model">workers</field>
    <field name="view_mode">tree,form</field>
    <field name="view_id" ref="view_auditor_workers_tree"/>
    <field name="groups_id" eval="[(4, ref('your_module.group_auditor'))]"/>
</record>

测试验证

  1. 切换到Employee组的用户账号,检查菜单:Auditor相关的菜单项应该完全看不到;
  2. 尝试直接输入Auditor动作的URL(比如/web#action=your_module.action_auditor_workers),应该会弹出"无权限访问"的提示。

这样就完美实现了你要的效果——Employee组能正常操作Workers对象,但只能看到HR经理视图,完全碰不到Auditor相关的内容。

内容的提问来源于stack exchange,提问作者Rahim Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:42:58