來自:http://www.oejia.net/blog/2016/02/21/odoo_right_ctrl.html
創建權限組
示例
<record id="base.group_website_publisher" model="res.groups">
<field name="name">Display Editor Bar on Website</field>
<field name="category_id" ref="base.module_category_website"/>
</record>
<record id="base.group_website_designer" model="res.groups">
<field name="name">Manage Website and qWeb view</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
<field name="implied_ids" eval="[(4, ref('base.group_website_publisher'))]"/>
<field name="category_id" ref="base.module_category_website"/>
</record>
以上截選自 odoo website 模塊源碼,創建了兩個組
name 組的描述名稱
category_id 指定此組屬於哪個應用程序(模塊)
users 指定了組裏面的用戶,這裏表示把admin用戶添加到該組
eval 解析(4,ID)
添加主從鏈接關係到id=ID的對象。
(3,ID)
去除和id=ID的對象主從鏈接關係,但是不刪除這個對象
(2,ID)
去除和id=ID的對象主從鏈接關係,並且刪除這個對象(調用unlink方法)
(5)
去除所有的鏈接關係,也就是循環所有的從數據且調用(3,ID)
(6,0,[IDs])
用IDs裏面的記錄替換原來鏈接的記錄,即先執行(5)
再循環IDs執行(4,ID)
組和菜單
<record model="ir.ui.menu" id=" memu_id1">
<field name="name" >menu1</field>
<field name="groups_id" eval="[(6,0,[ref('A'),ref('B')]),]"/>
<field name="sequence">1</field>
</record>
name 菜單名稱
groups_id 哪些組可以訪問該菜單
以上內容表示A組與B組的成員都可以訪問menu1菜單
另一中寫法:
<menuitem id="menu_id1 " name="menu1" parent="menu_p" sequence="1" groups="A,B "/>
base.group_user 是一個通用的系統內置用戶組, Odoo系統中所有用戶默認屬於此組
記錄規則
權限規則可用於更精細化的權限控制,對應【設置】->【安全】->【記錄規則】的數據
<record model="ir.rule" id="rule1">
<field name="name">rule1</field>
<field name="model_id" ref="model_model1"/>
<field name="global" eval="True"/>
<field name="domain_force">[1,’=’,1]</field>
<field name="groups" eval="[(4,ref('A'))]"/>
</record>
name 規則名稱
model_id 對應的模型
global 是否是全局
domain_force 過濾條件
groups 屬於哪個組
以上表示A組的成員就可以獲取model_model1的所有數據,可以看出domain_force是控制的關鍵
訪問控制列表(組和權限映射表)
另一種表達權限規則的方式是編寫 ir.model.access.csv 文件
對應【設置】->【安全】->【訪問控制列表】的數據
示例:
id | name | model_id:id | group_id:id | perm_read | perm_write | perm_create | perm_unlink |
---|---|---|---|---|---|---|---|
access_xxx | xxxxx | model_website_menu | base.group_website_designer | 1 | 1 | 1 | 1 |
model_id:id 對應的對象模型,
寫法示例:website.model_website_config_settings
如果內容本身在website模塊中則可以省略website.
後面則爲模型的name將”.”替換成”-“的結果,在前面加model_
group_id:id 哪個組
perm_read、perm_write、perm_create、perm_unlink 增刪改查權限。1 有權限 0 無權限