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

一:Odoo中的权限设置主要有以下5种

1)菜单、报表的访问权限

Odoo可以设置菜单项、某些报表的可见性,通过在xml文件中,对应的menu标签、report标签的groups属性来定义

2)模型的访问权限设置

Odoo可以设置模型对象的增删读改权限,这个在下面会详解。

3)记录的访问权限设置

模型的权限是针对改模型的所有记录的,而记录的访问权限则更加细致,针对每一条记录进行过滤筛选。在下文中详解。

4)字段的访问权限设置

    Odoo可以设置具体字段的访问权限,包括可见性、写、改权限等。

    有两种方式:一种是在模型定义的代码中,通过某字段的read=[群组]、write=[群组]属性,指定字段对于哪些群组可读写。

                      另一种是在模型的视图xml文件中,对字段通过 groups属性指定访问权限。

5)工作流操作权限

工作流中的活动可以设置操作权限,规定只有哪些群组的用户才可以操作。

1~4,都是通过群组来设置的,把用户添加至group,然后在代码中通过group以群组为单元进行权限设置。也可以在Odoo的开发者模式下,点击“群组”菜单,在可视化界面中进行设置:

5是通过角色来设置的,通过为用户赋予角色,为角色赋予权限,也就为用户赋予了权限。

二:Odoo中对数据的权限控制机制

Odoo对数据的访问权限管理有两种机制:模型访问权限管理(access rule)、记录规则管理(record rule),记录规则管理是对模型访问权限管理的细化。

三:访问权限组定义

在模块的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模型插入相应的记录,从而创建出对应的权限组。

四:模型访问控制

模型权限访问管理:模型级的权限控制,该模型的所有记录,对于群组内用户(如无定义,则对所有用户)的读写改删权限控制。

access rule是通过security文件夹下的ir.model.access.csv文件来控制的:

这个文件第一行指明了需要控制的内容:

id,name,model_id,group_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,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_product_account_user,product.product.account.user,product.model_product_product,group_account_user,1,0,0,0
access_product_product_account_manager,product.product.account.manager,product.model_product_product,group_account_manager,1,1,1,1
access_product_template_account_manager,product.template.account.manager,product.model_product_template,group_account_manager,1,1,1,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在第一步创建时指定,用于指定本规则作用于哪些组
            <field name="perm_read" eval="0/1"/>
            <field name="perm_write" eval="0/1"/>
            <field name="perm_create" eval="0/1"/>
            <field name="perm_unlink" eval="0/1" />
</record> </odoo>

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

六:Odoo中预设的权限组有哪些

在Odoo的“用户”菜单中,可以在“访问权”选项卡处,为用户设定系统预设的角色、群组,主要预设的群组以及其权限有:

Employee:base模块中定义的权限组,拥有业务伙伴、产品、财务、仓库等一些基本对象的读权限,用户一般应该属于该组,否则几乎不能查看和使用系统的任何功能。
    Administrator /Access Rights:base模块定义的权限组,该组拥有创建用户、创建权限组、设置安全规则等权限。具体来说,该组拥有菜单Administration/Users 和 Administration/Security的访问权限。

Administrator / Configuration:base 模块定义的权限组,该组拥有系统管理功能,具体来说,该组拥 有菜单Administration/Customization、Administration/Translations、Administration/Modules Management 的访问权限

Useability / No One:base模块定义的权限组,该组相当于一个空组。默认情况下,该组没有任何菜单和对象的访问权限,也没有任何 user 属于该组。系统默认是,如果没有定义任何组访问该菜单,则任何组都允许访问该菜单。也许某些菜单,希望默认任何组都不允许访问该菜单。这种情况,就可以声明 No One 组允许访问该菜单,那么,除非显示声明,否则其他组都不允许访问该菜单了。

Useability / Extended View:系统的某些扩展功能,如果要使用扩展功能,就必须属于该组。一 般用户都不必要该组。
    Partner Manager:该组拥有业务伙伴配置和业务伙伴新建功能。默认情况下,只要是 Employee,就能查看业务伙伴信息,但只有 Partner Manager 才能配置、修改、新建、删除业务伙伴信息

Product / Manager:product模块定义的权限组,该组拥有产品配置功能,也就是菜单 Products/Configuration 的访问权限。默认情况下,只要是 Employee,就能查看产品信息,但只有 Product / Manager 才能配置和修改产品信息

Finance / Accountant:相当于普通会计师,可以进行日常的会计处理工作
    Finance / Invoice:拥有业务伙伴发票的处理权限,相当于负责收付钱和开票的出纳。也就是对菜单 Financial Management/Invoices 的访问权限。
    Finance / Manager:相当于财务管理员,可以配置财务模块,以及查看财务报表
    Sale / Manager:允许配置销售模块,也就是允许访问菜单 Sales Management/Configuration。
    Sale / Salesman:允许进行大部分的销售日常工作,相当于销售部业务员。

Odoo权限控制的更多相关文章

  1. Odoo权限控制详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826105.html 一:Odoo中的权限设置主要有以下5种 1)菜单.报表的访问权限 Odoo可以设置菜 ...

  2. ODOO权限管理,在两个方面设置权限

    转载参考https://zhuanlan.zhihu.com/p/29130388 在odoo中新建两个用户user1,user2 新建用户 建完了用户,记得编辑用户,设置密码. 然后以user1用户 ...

  3. odoo权限管理(二.记录管理)

    规则保存在ir.rule模型表里,需要设置关联某个模型,关联很多组,访问权限控制和domian. 通过domain_force过滤出的一些记录来执行约束. 例子:经理只能删除状态为'cancel'的客 ...

  4. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  5. MongoDB 安全和访问权限控制

    MongoDB的访问控制能够有效保证数据库的安全,访问控制是指绑定Application监听的IP地址,设置监听端口,使用账户和密码登录 一,访问控制的参数 1,绑定IP地址 mongod 参数:-- ...

  6. WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方 ...

  7. ASP.NET MVC实现权限控制

    这篇分享一下 ASP.NET MVC权限控制.也就是说某一用户登录之后,某一个用户是否有权限访问Controller,Action(操作),视图等 想实现这些功能,需要在数据库创建好几个表:[User ...

  8. springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】

    项目结构:   1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  9. Appfuse:权限控制

    Appfuse的权限控制依赖于Struts的Menu机制,common下的menu.jsp是对菜单顺序的定义,详细的菜单项和菜单链接及权限再menu-config.xml中控制,如下: <Men ...

随机推荐

  1. Java - 枚举与注解

    Enumeration 于Java 1.5增加的enum type... enum type是由一组固定的常量组成的类型,比如四个季节.扑克花色. 在出现enum type之前,通常用一组int常量表 ...

  2. C#三大特性之 封装、继承、多态

    一.封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型.  封装的意义: 封装的意义在于保护或者防止代码(数据) ...

  3. winform程序限制只能打开一个进程

      有很多方案,先来最傻瓜式的  : static class Program     {         /// <summary>         /// 应用程序的主入口点.     ...

  4. thinkphp I() 方法

    I() 方法用于获取前台提交的表单的value值. <form id="complai_form" method="post" action=" ...

  5. Asp.Net实现在线网站安装(上)

    在很多年前,笔者在使用z-blog搭建个人部落格的时候,最大的感受就是z-blog在线安装功能! 因为在那个时候,以几K每秒的速度上传一个几M或者十几M的压缩包到虚拟主机上,是一个很痛苦的事情.特别是 ...

  6. CSS 伪类(下)结构性伪类\UI伪类\动态伪类和其他伪类 valid check enable child required link visit

      伪类选择器汇总伪类选择器有4种, 结构性伪类\UI伪类\动态伪类和其他伪类. 具体如下 结构性伪类选择器结构性伪类选择器它能够根据元素在文档中的位置选择元素, 这类元素都有个前缀":&q ...

  7. 如何使用canvas进行2d绘图

    canvas 的 2D context 可以绘制简单的 2D 图形.它的 2D context 坐标开始于 <canvas> 元素的左上角,原点坐标是(0,0).所有的坐标值都基于这个原点 ...

  8. c# 序列化接口(转载贴)

    http://www.cnblogs.com/TianFang/p/3724449.html

  9. CentOS 7 yum 安装 Nginx

    1.添加Nginx到YUM源 添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令: sudo rpm -Uvh http://nginx.org/packages/centos/7 ...

  10. Linux /etc/fstab文件

    一,作用 /etc/fstab是用来存放文件系统的静态信息的文件,当系统启动时,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂在到执行的目录 二,挂载的限制 1,根目录是必须挂载 ...