老韓頭的開發日常 ? 【好書學習】系列
隨筆,隨便寫寫
權限的三種管理:或、與、非
做過odoo二開的人都了解,在odoo中,權限是跟著權限組走的,
與
全域的記錄規則是以“與”的關系進行計算的,需同時滿足才可以,
或
而非全域的權限,是以“或”的規則進行累加的,因此,如果我們需要的權限大于某個官方基礎模塊的權限組時,我們可以通過新建一個權限組,然后給這個新的權限組賦予缺少的權限即可,這就是我們所說的“或”,但,如果我們需要的權限正好是小于某個權限組呢,難道要新建一個組,并完整拷貝已知最接近權限組A的權限后去除多余的權限嗎?這并不是一個明智的決定,
劃重點
以“完整拷貝已知最接近權限組A的權限后去除多余的權限”的方式創建新的權限組,也就以為著該場景下用戶只能是我們新建的權限組,但是如果后續的二開模塊中,由其他的開發人員新建了某個模型,并將該模型的CURD權限授予權限組A,并對回應的視圖進行了擴展,那么,屬于我們新建權限組的用戶,就沒有辦法使用最新的功能了,
非
那么針對上面的場景,目前我能想到的最優的解決方案是擴展“非”的邏輯,見下圖

一般情況下,我們照常賦予目標用戶權限A的角色,同時新建一個權限組,并在禁用選單和禁用記錄,中勾選希望去除的記錄,
比如,我們授予了用戶“銷售”模塊下“僅自己單據”的角色,但又不希望用戶看到銷售人員為空的單據,那么我們就可以禁用如下的記錄規則,

選單和記錄規則的禁用,分別在ir_ui_menu.py(_visible_menu_ids)和ir_rule.py(_get_rules)中,
本文來自博客園,作者:老韓頭的開發日常,轉載請注明原文鏈接:https://www.cnblogs.com/xushuotec/p/15758177.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/401434.html
標籤:其他
下一篇:web標準
