以下內容僅適用於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的過程中,一定會存在根據業務的調整,進行二開的需求。那么通過頁面上直接調整的方式,將直接導致在后續二開中碰到非常多奇怪的問題。