Odoo權(quán)限控制

除了使用自定義代碼管理訪問外,Odoo主要以數(shù)據(jù)驅(qū)動(dòng)的方式進(jìn)行權(quán)限管理。這種機(jī)制通過組與特定用戶相關(guān)聯(lián):用戶屬于一個(gè)或多個(gè)組,權(quán)限與組關(guān)聯(lián),從而將權(quán)限應(yīng)用于用戶。

模型權(quán)限

通過ir.model.access的記錄行進(jìn)行管理,定義模型的訪問權(quán)限。每個(gè)訪問權(quán)限項(xiàng)對(duì)應(yīng)一個(gè)模型,組(一個(gè)或者沒有)以及相應(yīng)的權(quán)限。
模型權(quán)限是加法的,對(duì)于給定的模型,用戶的訪問權(quán)限是用戶所在的全部組的權(quán)限的集合。例如:用戶屬于兩個(gè)組,一個(gè)組有寫入權(quán)限,另外一個(gè)組有刪除權(quán)限,則用戶擁有寫入和刪除權(quán)限。
如果模型權(quán)限未指定組,則訪問權(quán)限適用于所有用戶,否則僅適用于給定組的成員??捎玫臋?quán)限包括:
perm_create:創(chuàng)建
perm_read:閱讀和搜索
perm_write:更新已有記錄
perm_unlink:刪除已有記錄

記錄行規(guī)則

記錄行規(guī)則是對(duì)記錄行的操作權(quán)限(創(chuàng)建、讀取、更新和刪除)控制。在應(yīng)用了模型權(quán)限后再應(yīng)用記錄行規(guī)則。記錄行規(guī)則的定義包括:

  • 規(guī)則對(duì)應(yīng)的模型權(quán)限
  • 規(guī)則適用的一組權(quán)限(例如,如果設(shè)置了perm_read,則只有在讀取記錄時(shí)才會(huì)檢查該規(guī)則)
  • 規(guī)則適用的一組用戶組,如果沒有指定組,則該規(guī)則是全局的
  • 規(guī)則適用的記錄行,用domain來定義,符合domain規(guī)則的可訪問,不符合的則不能訪問。這里的domain有兩個(gè)上下文可以使用:user是當(dāng)前用戶的記錄行,time是時(shí)間模塊。
    全局規(guī)則(規(guī)則中未指定組)和組規(guī)則(規(guī)則中指定了組)的使用方式截然不同:
  • 全局規(guī)則是減法的,必須全部匹配才能訪問記錄
  • 組規(guī)則是加法的,其中任何一個(gè)匹配(并且全部的全局規(guī)則都匹配)就能訪問記錄
    這意味著第一個(gè)組規(guī)則限制記錄的訪問,但是其它的所有組規(guī)則都在擴(kuò)展訪問。而全局規(guī)則是每一個(gè)規(guī)則都在限制記錄的訪問(或者不起作用)。

警告
記錄行規(guī)則和模型權(quán)限對(duì)于管理員用戶無效,管理員用戶擁有完全權(quán)限

字段權(quán)限
這個(gè)是在7.0版本之后新增的。ORM的Field有一個(gè)groups屬性,這個(gè)屬性可以定義一個(gè)組的列表(以逗號(hào)分隔的標(biāo)識(shí)符)。如果當(dāng)前用戶不是這個(gè)組列表中的任一組成員,那當(dāng)前用戶不能訪問這個(gè)字段:

  • 受限制的字段將在視圖請(qǐng)求中被自動(dòng)移除
  • 受限制的字段將在fields_get()請(qǐng)求中被移除
  • 如果嘗試(顯示的)讀取或?qū)懭胧芟拗谱侄螘?huì)導(dǎo)致訪問錯(cuò)誤

工作流流轉(zhuǎn)規(guī)則

工作流流轉(zhuǎn)可以限制在一個(gè)特定的組中,組外的用戶無法觸發(fā)轉(zhuǎn)換。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容