在企業系統中,權限控管 是不可或缺的一環。Odoo 提供了完整的權限與角色管理機制,能精準控制誰可以存取、編輯或刪除哪些資料。今天我們將介紹 Odoo 的 使用者、群組與存取控制 (Access Control),並透過範例實作。
Odoo 採用三層權限控制:
這樣的設計,讓權限控管更具彈性與可擴充性。
ACL 決定一個群組能否對某個 Model 進行 建立 (Create)、讀取 (Read)、寫入 (Write)、刪除 (Delete) 操作。
存放在 security/ir.model.access.csv
。
範例 (security/ir.model.access.csv
):
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_library_user,access.library.user,model_library_book,base.group_user,1,1,1,0
這段設定表示:
base.group_user
)library.book
模型擁有讀、寫、建立權限Record Rules 決定「使用者能存取哪些資料列」。
範例 (security/library_security.xml
):
<odoo>
<record id="library_book_user_rule" model="ir.rule">
<field name="name">Library Books: User can only see own books</field>
<field name="model_id" ref="model_library_book"/>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="domain_force">[('create_uid', '=', user.id)]</field>
</record>
</odoo>
這條規則代表:
Odoo 允許你設計不同的群組,以符合企業角色需求:
群組可以在 __manifest__.py
中註冊,也能在 XML 中定義,並分配對應的權限。
建立完成後,重新啟動 Odoo 並更新模組:
./odoo-bin -c odoo.conf -d mydb -u library_module
再透過不同帳號登入系統:
Odoo 的權限管理機制分為三層:
這讓 Odoo 能同時滿足中小企業到大型企業的需求,確保數據安全與職責分工。在下一篇文章中,我將帶你認識 Odoo 自動化流程(Server Actions 與 Scheduled Actions),讓系統能自動處理例行任務。