odoo权限管理:
权限等级
第一级是access rule,即表级(对象)权限,控制用户组对某个对象是否有创建、读取、修改、删除的权限,一般是用security/ir.model.access.csv文件来管理。
第二级是行级权限,控制用户组对表中数据行的访问权限,可以写在views/views.xml文件中。
第三级是字段级权限,一个对象或表上的某些字段的访问权限。
第四级是菜单级权限,不属于指定菜单所包含组的用户看不到该菜单
表级权限:
access_project_project_manager,项目管理项目超管,model_project_project,asset_group_manager,1,1,1,1
access_project_mission_manager,项目管理任务超管,model_project_task,asset_group_manager,1,1,1,1
access_project_project_group_user,项目管理项目组员,model_project_project,asset_group_user,1,0,0,0
access_project_mission_group_user,项目管理任务组员,model_project_task,asset_group_user,1,0,0,0
行级权限:
security/xxx.xml
<record id="train_info_user_rule" model="ir.rule">
<field name="name">任务:仅用户个人可见</field>
<field name="model_id" ref="model_train_info"/>
<field name="domain_force">[('create_uid','=',user.id)]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="train_info_leader_rule" model="ir.rule">
<field name="name">任务:组长可见组内任务</field>
<field name="model_id" ref="model_train_info"/>
{# <field name="groups" eval="[(4, ref('base.group_user'))]" />#}
</record>
name 规则名称
model_id 对应的模型
global 是否是全局
domain_force 过滤条件,在创建id等于当前用户id时,显示该条记录
groups 属于哪个组base.group_user是所有组,可以不写
字段级权限:
<?xml version="1.0" ?>
<odoo>
<record id="module_asset_category" model="ir.module.category">
<field name="name">内部管理系统</field>
</record>
<!-- 普通组员 -->
<record id="asset_group_user" model="res.groups">
<field name="name">组员</field>
<field name="category_id" ref="module_asset_category" />
<field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
</record>
<!-- 组长 -->
<record id="asset_group_leader" model="res.groups">
<field name="name">组长</field>
<field name="category_id" ref="module_asset_category" />
<field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
</record>
</odoo>
菜单级权限:
<menuitem id="menu_pending_trial"
name="待审培训情况信息"
parent="menu_train_info_id"
action="pending_trial"
groups="sugonSystem.asset_director"
sequence="2"
/>