Odoo权限控制详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826105.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权限控制详解的更多相关文章
- spring-security权限控制详解
在本例中,主要讲解spring-boot与spring-security的集成,实现方式为: 将用户.权限.资源(url)采用数据库存储 自定义过滤器,代替原有的 FilterSecurityInte ...
- thinkphp基于角色的权限控制详解
一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...
- SVN 权限配置详解
SVN权限详细配置 本章将详细介绍SVN权限配置涉及的两个配置文件, svnserve.conf 和 authz.conf,通过对配置逐行的描述,来阐明其中的一些细节含义.除此之外的其他配置.安装等内 ...
- (转) shiro权限框架详解06-shiro与web项目整合(上)
http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springM ...
- 若依管理系统RuoYi-Vue(二):权限系统设计详解
若依Vue系统中的权限管理部分的功能都集中在了系统管理菜单模块中,如下图所示.其中权限部分主要涉及到了用户管理.角色管理.菜单管理.部门管理这四个部分. 一.若依Vue系统中的权限分类 根据观察,若依 ...
- Oracle权限管理详解
Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...
- Elasticsearch shield权限管理详解
Elasticsearch shield权限管理详解 学习了:https://blog.csdn.net/napoay/article/details/52201558 现在(20180424)改名为 ...
- 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解
本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...
- Odoo权限控制
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9278734.html 一:Odoo中的权限设置主要有以下5种 1)菜单.报表的访问权限 Odoo可以设置菜单项 ...
随机推荐
- c# 异步调用(异步模式,基于事件)
c# 异步调用之异步模式Func<string, IImageRequest, string> downloadString = (address, req) => { var cl ...
- cad.net 在位编辑的原理猜测及找到在位编辑状态的图元
在位编辑的时候会产生一个名为 0-RefEdit0 的图层,原因不明.... 在位编辑的本质是一个长事务,长事务是使用编辑库的对象替换源对象,相当于剪辑.不理解没关系,请看下面的聊天记录.... [贵 ...
- List Map Set的线程安全
常见的ArrayList LinkedList HashMap TreeMap LinkedHashMap HashSet TreeSet LinkedHashSet 都是线程不安全的.如果要使用 ...
- Python的WEB框架
Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. ? 1 2 ...
- Ognl 语法基础教程
本文将力求用最简单的语言和实例,介绍一下 OGNL 的语法规则,文章主要内容参考自官方文档http://commons.apache.org/proper/commons-ognl/language- ...
- KAFKA 节点配置问题
-- ::, INFO o.a.j.e.StandardJMeterEngine: Running the test! -- ::, INFO o.a.j.s.SampleEvent: List of ...
- 数据结构部分总结(c语言版)
这是一个 /*此头文件适用于串其中包括最基本的函数操作 OK代表成功NO代表失败FS为特殊失败的标志 注:此头文件中的初始化使用'0'代表结束的 使用者可以根据需要自行改变,最后一 个函数为KMP算法 ...
- LOJ2392 JOISC2017 烟花棒 二分、贪心
传送门 先二分一个最大速度\(v\). 分析移动的性质.很显然的事情是在火焰两边的所有人都会往火焰的方向以最快的速度运动,这样可以使当前位置更早获得火焰,同时当前拥有火焰的若干个人为了传递火焰自然也会 ...
- /etc/skel目录
/etc/skel目录 Linux中的/etc/skel目录(skel是skeleton的缩写,意为骨骼.框架.)是用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到 ...
- SAP替代,出口U904在RGGBS000中未生成
报错.提示出口U904在RGGBS000中未生成. 一般情况下需要到 程序RGGBS000 中,在form:get_exit_titles 中增加下列代码. exits-name = 'U904. e ...