Odoo安装教程7-创建新的插件模块第六讲

添加权限组

普通用户在使用功能前需获得相应的权限。 Odoo 中使用安全组来实现,权限授予组,组中分配用户。 Odoo 应用通常有两个组:针对普通用户的用户组,包含额外应用配置权限的管理员组。
下面我们就来添加这两个安全组。权限安全相关的文件通常放在模块下/security 子目录中,这里我们创建 security/library_security.xml 文件来进行权限定义。安全组使用分类来更好地组织关联应用。所以第一步我们在 ir.module.category 模型中创建针对图书应用的分类:

<?xml version="1.0" ?>
<odoo>
<record id="module_library_category" model="ir.module.category">
<field name="name">Library</field>
</record>
</odoo>

下一步,我们要添加两个安全组,首先添加用户组。在以上结束标签前添加如下 XML 代码块:

<!-- Library User Group -->
<record id="library_group_user" model="res.groups">
<field name="name">User</field>
<field name="category_id" ref="module_library_category" />
<field name="implied_ids" eval="[(4, ref('base.group_user'))]" />
</record>

记录在 res.groups 模型中创建,添加了三个字段:
⚫ name:组名
⚫ category_id:关联应用,这是一个关联字段,因此使用了 ref 属性来通过 XML ID 连接已
创建的分类
⚫ implied_ids:这是一个 one-to-many 关联字段,包含一系列组来对组内用户生效。这里使用了一个特殊语法,在本系列文章第五篇 Odoo 12 开发之导入、导出以及模块数据中会进行介绍。我们使用了编号 4 来连接基本内部用户组 base.group_user。
然后我们创建管理员组,授予用户组的所有权限以及为应用管理员保留的其它权限:

<!-- Library Manager Group -->
<record id="library_group_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="module_library_category" />
<field name="implied_ids" eval="[(4, ref('library_group_user'))]" />
<field name="users" eval="[
(4, ref('base.user_root')),
(4, ref('base.user_admin'))
]" />
</record>

像用户组一样,这里也有 name, category_id 和 implied_ids , implied_ids 关联了图书用户
组,以继承其权限。还添加了一个 users 字段,让管理员和内部 root 用户自动成为应用管理员。
“ 小贴士: 在 Odoo 老版本中, admin 管理员用户同时也是 root 用户。 Odoo 12 中有一个系统 root 用户,在用户列表中不显示,仅在框架需要进行提权(sudo)时在内部使用。 admin 可以登入系统并应拥有所有功能的访问权限,但不再像系统 root 用户那样可以绕过访问限制。 ”同样需要在声明文件中添加该 XML 文件:

'data': [
'security/library_security.xml',
'views/library_menu.xml',
],

注意 library_security.xml 加在 library_menu.xml 文件之前,数据文件的加载顺序非常重要,因为我们只能引用已经定义过的标识符。菜单项经常引用到安全组,所以建议将安全组定义文件放到菜单和视图文件之前。

更多教程:https://www.erpdaxue.cn/odoo/odoo-teach/

posted @ 2020-05-11 11:14  十年老猿  阅读(191)  评论(0编辑  收藏  举报