OpenERP权限管理层次

来源:互联网 发布:太仓市司法拍卖淘宝网 编辑:程序博客网 时间:2024/06/05 05:20

OpenERP的权限的核心是权限组(res_groups)。对每个权限组,可以设置权限组的菜单表示,对象表示,记录规则表示,字段表示。

1.菜单/对象级别

设置哪些人可以访问哪些菜单/对象,对象的访问权限包括创建、读、写、删除。

2.记录级别

设置哪些人可以访问哪些记录,也就是设置表的查询条件。

3.字段级别

设置表中的字段的访问权限。

4.工作流级别

在工作流的每一步迁移中,设置哪些角色允许触发本迁移。

 

OpenERP 的每个登录用户都属于某些组,以及拥有某些角色。

以下均以代码编写为例。

2.菜单/对象表示

模块下 security 目录有两个文件:xxx_security.xml、ir.model.access.csv。

其中,x_security.xml文件定义组和组对菜单的访问权限,ir.model.access.csv定义组对对象的权限矩阵。

x_security.xml文件:

 

Noupdate 表示,当模块升级时是否更新本条数据。对于demo 数据,通常设置成noupdate=”1”,即不更新,不指定noupdate 的话,默认值是noupdate=”0”。

 

Category_id和Implied_ids表示,group_dl_vehicle_manager和group_dl_vehicle_user属于module_dl_vehicle_category分组,并且只能选择其中一个。

 

product\security 目录下的文件ir.model.access.csv:


这四行定义了组dl_vehicle_management.group_dl_vehicle_user、dl_vehicle_management.group_dl_vehicle_manager对对象model_dl_vehicle_management和model_dl_vehicle_type_management的读、写、新建、删的权限。从权限定义可以看出,manager对两个model具有全部权限,user对model_dl_vehicle_management对象具有读、写、新建权限,对model_dl_vehicle_type_management对象只有读权限。

默认情况下,菜单项没有车辆管理菜单。


在 设置—用户—用户中,选择用户,点击地利车辆下拉菜单,选择 用户。


点击车辆管理,可以看到车辆中,有查看,新建,修改权限,但没有删除权限。


在车型中,只有查看权限,如果新建车型,则会提示权限不足。


在设置中,选择 管理员。回到车辆管理页面,可以看到现在对车辆和车型均有查看,新建,修改,删除权限。

 

上面提到用户对车型只有查看权限,这里我们可以对用户隐藏车型菜单,在需要隐藏的菜单代码中加入groups选项。


重新运行并更新模块后,可以看到用户只能看到车辆菜单,但是看不到车型菜单。


上述隐藏菜单方法虽然符合用户习惯,但是不具备安全性。因为用户具有对模型对象的访问权限,所以可以获取菜单ID,输入URL获取界面。这里我们修改menu_id和action,获取信息。所以应尽量避免使用该方法。


注:新建车辆时需要查看选择车型,所以需要车型的访问权限。

3.记录规则表示

记录规则是一个记录模型”ir.rule”,关联到一个模型。

在xxx_security.xml文件中添加如下语句。


noupdate=”1”表示模块升级时不更新。

Domain_force表示自定义Domain 表达式,用于过滤条件,含义是只能访问符合本过滤条件的记录。这里过滤条件是操作人必须是当前用户

其他字段和ir.model.access.csv文件中字段含义相同,注意ID不能重名。

下面进行验证操作。

1.管理员新建自己的车辆


2.用户1新建自己的车辆


3.用户2新建自己的车辆


4.管理员可以查看到所有用户和管理员新建的车辆


5.用户1和用户2只能查看自己新建的车辆。

 

 

 

4.字段表示                              

字段表示权限可以指定权限组能访问记录里的哪个字段,可以在视图和对象上指定字段访问权限。

1.在视图上指定字段访问权限

在视图中加入下述语句,指定group_dl_vehicle_manager权限组才能看到vehicle_driver(司机)字段。


模块升级后管理员登录后可以看到’司机’字段。


用户登录界面没有’司机’字段。


 

2.在对象上指定字段访问权限

除了在视图上指定,还可以在对象上指定字段访问权限。如下图所示,只有 group_dl_vehicle_manager权限组才可以读、写vehicle_driver字段。


注:这里也可以使用groups进行组限定,效果和在视图上操作效果相同。

模块升级后管理员可以添加车辆信息。


用户登录后新建车辆信息,输入司机字段。


点击保存(司机字段不能限定非空),可以看到司机字段为空,说明用户无法对司机字段进行编辑,同理也无法读取司机字段。

 

第2节介绍到菜单隐藏方法中不安全的方法,这里对字段进行权限设定,可以避免

 

 

5.工作流表示

在前一篇中任何人都可以进行车辆审批,这里加入权限控制,用户和管理员都可以提交车辆,只有管理员可以审批。

工作流权限在工作流的迁移(Transition)定义中指定,下面指定管理员可以审批,即触发本迁移。

 

因为用户没有审批权限,我们在页面中加入权限,只有管理员登录页面才会出现同意和拒绝按钮。

1.用户填写车辆信息,并保存。


2.点击提交按钮,用户页面没有审批按钮。


3.使用管理员帐号登录,出现审批按钮,工作流继续,这里点击拒绝按钮,流程结束。


4.使用用户帐号登录,可以看到状态是拒绝。


1 0
原创粉丝点击