作為一名學生或系統管理者,我希望能在登入時袛看到我能看到的功能或選單
1.在權限組category新增 圖書館系統
2.【圖書館系統】權限選擇,有二個權限 學生 (繼承內部使用者)及 系統管理者(繼承學生)
3.學生袛能看到menu_library_books_readonly
4.系統管理者能看到全部選單
5.在學生新增時,給予group_library_student 及預設密碼
為了實現您提到的需求,這裡是具體的步驟和實作方式,涵蓋權限組的設置和菜單控制:
category
中新增「圖書館系統」我們首先需要在 ir.module.category
中新增一個 圖書館系統
權限分類,這個分類將用於圖書館的功能模組中。
<odoo>
<record id="module_category_library_management" model="ir.module.category">
<field name="name">圖書館系統</field>
<field name="description">管理圖書館系統的權限</field>
<field name="sequence">10</field>
</record>
</odoo>
menu_library_books_readonly
。<odoo>
<!-- 學生權限組 -->
<record id="group_library_student" model="res.groups">
<field name="name">學生</field>
<field name="category_id" ref="module_category_library_management"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> <!-- 繼承內部使用者 -->
</record>
</odoo>
<odoo>
<!-- 系統管理者權限組 -->
<record id="group_library_admin" model="res.groups">
<field name="name">系統管理者</field>
<field name="category_id" ref="module_category_library_management"/>
<field name="implied_ids" eval="[(4, ref('group_library_student'))]"/> <!-- 繼承學生權限 -->
</record>
</odoo>
menu_library_books_readonly
。<odoo>
<menuitem id="menu_library_books_readonly" name="書籍查詢" action="action_library_books_readonly"
groups="group_library_student"/>
</odoo>
當新增學生時,自動分配 group_library_student
權限組,並設置預設密碼。
library.student
模型中新增權限與預設密碼功能from odoo import models, fields, api
class LibraryStudent(models.Model):
_name = 'library.student'
_inherit = ['mail.thread']
name = fields.Char(string='學生姓名', required=True)
user_id = fields.Many2one('res.users', string='系統用戶')
@api.model
def create(self, vals):
# 在創建學生時,為其分配一個用戶並自動分配學生權限組和預設密碼
user_vals = {
'name': vals.get('name'),
'login': vals.get('email'), # 假設使用 email 作為登入名
'password': '123456', # 設置預設密碼
'groups_id': [(6, 0, [self.env.ref('module.group_library_student').id])], # 分配學生權限組
}
user = self.env['res.users'].create(user_vals)
vals['user_id'] = user.id
return super(LibraryStudent, self).create(vals)
新增「圖書館系統」權限分類:為了確保圖書館系統的權限管理能夠與其他模組區分開來,我們新增了一個專屬的權限分類,以便能夠更細緻地控制學生和系統管理者的權限。
創建兩個權限組:我們針對不同的角色需求,設置了「學生」和「系統管理者」兩個權限組。學生僅能查看 menu_library_books_readonly
,而系統管理者則擁有查看及操作所有功能的權限,確保角色分工明確,權限控制精準。
自動分配權限組與預設密碼:透過自動化流程,當新增學生資料時,系統將自動分配該學生至「學生」權限組,並且自動設置預設密碼,簡化了管理流程,提高了用戶管理的效率。
在實現過程中,一定會有差異,修改記錄已經提交並展示於以下 GitHub 項目中,讀者可參考此修改歷程以便進一步了解具體的問題修正與功能增強。
GitHub 詳細修改記錄:
https://github.com/kulius/odoo17_ithelp
權限的繼承與分類:Odoo 的權限設定依賴於不同權限組之間的繼承關係,我們依照業務需求,將「學生」權限組繼承自內部使用者,並使「系統管理者」權限組繼承自學生。這樣的設計確保了基礎權限可以共享,而進階權限則被更高級別的管理者掌控。
選單項目可見性控制:可見性基於使用者的權限組進行控制,這樣可以有效防止低權限的使用者存取高敏感度的功能。
自動分配與預設值:為了減少管理員手動設置權限與密碼的負擔,我們在學生新增流程中加入了自動分配權限組和預設密碼的功能。
這一章的權限設置不僅提升了系統的安全性和可管理性,還通過自動化的設置大大減輕了管理員的工作負擔。確保學生和管理者在登入時只會看到自己應該看到的功能和選單。這樣的設計有效提升了系統的使用體驗,同時也確保了系統的安全運作。