加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Odoo权限控制

发布时间:2020-12-16 23:47:19 所属栏目:百科 来源:网络整理
导读:转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9278734.html? ? 一:访问权限组定义 ? ??在模块的security目录下,新建groups.xml文件,在其中定义权限组。 ? xml version="1.0" encoding="utf-8" ? odoo data noupdate ="0" record id ="权限组id"

转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9278734.html?

?

一:访问权限组定义

? ??在模块的security目录下,新建groups.xml文件,在其中定义权限组。

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="0">

        <record id="权限组id" model="ir.module.category">
            <field name="name">XXX权限组</field>
            <field name="description">XXX模块权限设置</field>
        </record>

    </data>
</odoo>

? ? 该文件是data文件,需要在manifest.xml中配置。在创建数据库后就会执行解析,往ir.module.category模型插入相应的记录,从而创建出对应的权限组。

?

二:模型访问控制

? ? 在模块的security目录下,新建ir.model.access.csv文件。

? ? 在odoo中数据模型的访问控制都是在ir.model.access.csv文件中定义的。

? ? 格式如下:

? ? 第一行:定义列标

 id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

? ? 分别对应:

 id:记录的外部标识符 (也称为 XML ID)。在我们的模块中它应该是唯一。
 name:描述标题。官方模块通常使用模型名称和组的圆点分隔的字符串。如: todo.task.user
 model_id :模型的外部标识符。todo.task对应该标识符是model_todo_task group_id:权限组,在第一步中通过groups.xml。最重要的一点是供定义它的模块名前缀。比如员工组,它的标识符为base.group_user。 
 perm_XX:字段标记授予 读,写,创建,删除 权限。

?

? ? 之后下面各行一一对应第一行定义的内容去书写权限控制,如:

id,perm_unlink
access_product_product_account_user,product.product.account.user,product.model_product_product,group_account_user,1,0
access_product_product_account_manager,product.product.account.manager,group_account_manager,1
access_product_template_account_manager,product.template.account.manager,product.model_product_template,1

? ? 最后,我们把模块的权限控制文件添加到manifest文件的data中加载:

‘data‘:[‘security/ir.model.access.csv‘,]

?

三:记录访问控制

? ? 记录规则的定义模型是ir.rule。

? ? 记录规则控制,我们需要提供一个独特的名称,还需要操作符和规则过滤器组成的模型以达到访问限制,在Odoo中,规则过滤器通常是多个元组组成的列表。

? ? 规则适用于某些特定的访问组。如果它没有访问组,这种特殊情况,被认为是全局 ( global字段将自动设置为 True)。全局规则是不同的,因为他们实施了限制,不会被非全局规则重写

? ? 1:首先,我们在security目录下新建?模块名_security.xml?文件。

? ? 2:然后,在其中添加以下内容:

 
 
<?xml version="1.0" encoding="utf-8"?>
<odoo>    
        <record id="模块名_对象_rule" model="ir.rule"> //为某对象添加记录规则
            <field name="name">规则名</field>
            <field name="model_id" ref="model_模块名"/>
            <field name="domain_force">[(‘字段名‘,‘操作符‘,值)]</field> //记录过滤表达式:符合该表达式的记录才能被访问
            <field name="groups" eval="[(值,ref(‘访问组id‘))]"/> //访问组id在第一步创建时指定
        </record>    
</odoo>

? ? 3:最后,在manifest中添加该文件到data属性下生效。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读