添加權限組
普通用戶在使用功能前需獲得相應的權限。 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 文件之前,數據文件的加載順序非常重要,因爲我們只能引用已經定義過的標識符。菜單項經常引用到安全組,所以建議將安全組定義文件放到菜單和視圖文件之前。