以下內容僅適用於odoo的客戶,不適用於開發人員。
下文介紹中涉及的概念及UI均是在odoo14社群版中進行。
一、 odoo中的物件
選單、檢視、訪問許可權(對應 模型)、記錄規則(對應 模型記錄)
二、 許可權控制
總的來說,odoo中的許可權控制顆粒度還是非常細的。最小可以到模型中的某個具體的欄位,以及在odoo系統中的每一條記錄。
2.1 實現原理
以上提到的所有的物件,都是以許可權組為最小單位進行控制的。有點類似於庫存中商品與變體的感覺。
2.2 UI方式實現許可權控制
-
啟用開發者模式
-
啟用後,可在設定的二級選單中看到多了
群組
、翻譯
和技術
選單。此處只講許可權,因此我們進入群組。
-
在群組頁面下,已列出了目前系統中在用的群組。我們以【會計】模組下的【發票】群組為例進行講解。
-
在發票群組的form檢視下,我們可以配置屬於該群組的使用者、群組繼承關係、選單、檢視、訪問許可權、記錄規則。
下面我們針對以上提到的每一類物件進行詳細說明
2.2.1 使用者
直接將使用者配置到該群組,同一使用者可屬於多個群組,因此即可具備多個群組的許可權。
多個群組之間是或
的關係,即許可權是累加的。因此,若使用者需建立一個新的許可權組,那麼可以全部重新配置物件許可權或者可以查詢最接近目標的許可權組進行整合,然後再新增需要的許可權即可。
2.2.2 繼承
該群組繼承自另一個群組,且在該群組新增使用者後,該使用者也將同步屬於繼承的群組。
2.2.3 選單
選單是指該許可權組允許訪問的選單。
使用者可直接在UI層面增刪改。但不建議,存在丟失風險。
2.2.4 檢視
使用者通過odoo系統,在後臺中看到所有的頁面均是以檢視的形式存在,檢視在伺服器中的存在形式是XML檔案,並以字串的形式儲存在資料庫中。
使用者可直接在UI層面增刪改。但不建議,存在丟失風險。
2.2.5 訪問許可權
訪問許可權針對的物件是odoo中的資料模型,涉及的許可權為其實就是資料庫中的CURD(建立、寫、讀、刪除)。
使用者可直接修改該群組對於某一模型操作的許可權控制,同樣也可以針對模型進行新增、刪除。但不建議,存在丟失風險。
2.2.6 記錄規則
記錄規則針對的是已儲存在系統中的具體記錄資訊。比如,在資料庫層面,銷售訂單是儲存在同一個表結構中的。但在多公司的模式下,我們有時並不希望某些員工看到其他公司的銷售情況。因此,就可以通過限制銷售訂單的訪問記錄實現。下圖中的[(1,'=',1)]代表是具備針對該模型的全部訪問許可權。
其中記錄規則還可以限制記錄是在何種操作方式下生效,比如限制使用者只能修改自己建立的銷售單等。
以上內容,使用者同樣可直接在UI層面增刪改。但不建議,存在丟失風險。
2.2.7 模型欄位的控制
我們知道,在odoo中,所有的資料記錄都是依賴於模型存在的,模型對應的又是資料庫中的表。模型的組成中包括欄位、型別等基本資訊。分別對應資料庫表中的列及列型別。在程式碼層面,我們可以實現針對特定模型某個欄位的許可權控制。比如,我們在銷售單中新建利潤
欄位,該欄位可根據實際的成本價及售價自動生成。便於管理層直觀的瞭解此次銷售的基本情況。但是,我們並不想普通的員工瞭解到這些資訊。那麼,我們就可以將該欄位分配到特定的群組。
以上內容,使用者同樣可直接在UI層面實現。但不建議,存在丟失風險。
-
配置頁面在,一級選單【設定】- 二級選單【技術】- 三級選單【模型】進入特定模型的列表檢視。
-
點選進入具體的某個模型的form檢視,將列出該模型的基本情況。
-
若此處,我們想限制部分使用者訪問
庫存
模型下的會計日期
欄位,可點選該欄位。在訪問許可權中新增針對該欄位的特定群組的訪問控制。但不建議,存在丟失風險。
odoo中的針對使用者側的許可權控制基本操作如上,我在每個操作中都新增了存在丟失風險
字樣。
原因如下:
- 我們在通過UI進行的任何調整,都是直接體現資料庫中的。那麼當我們在特殊情況下,需要對資料庫進行重建時,以上修改的內容全部都會丟失。
- 在使用odoo的過程中,一定會存在根據業務的調整,進行二開的需求。那麼通過頁面上直接調整的方式,將直接導致在後續二開中碰到非常多奇怪的問題。