最新历史版本 :权限细粒度参数控制 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本
11.0

1.2 功能简介

用户认证 后会将报表三个固定的默认参数$fine_username$fine_role$fine_position保存在 Session 中。

同时提供两个函数GETUSERDEPARTMENTS()GETUSERJOBTITLES()来分别获取部门角色的部门和职位。

同一报表环境下,模板中就可以直接以参数的形式获取到对应的值,然后在模板里面进行筛选判断就可以显示不同数据及样式。

1.3 参数简介

权限细粒度相关的参数和函数如下表所示:

注1:$fine_username、$fine_role、$fine_position 是 FineReport 默认的参数,所以调用时大小写必须保持一致。

注2:不支持模拟计算。

参数
说明示例
$fine_username获取登录系统的用户名

例如登录用户名为 Anna

$fine_username=Anna

$fine_display_name获取登录系统的姓名(用户名)

例如登录用户名为 安娜(Anna)

$fine_display_name=安娜(Anna)

$fine_role获取登录系统的角色

1)若登录用户为超级管理员

$fine_role=superusers

2)若登录用户角色为角色数据架构师

$fine_role=数据架构师

3)若登录用户无角色

该参数值为空

4)若登录用户存在多个角色「角色1」「角色2」

$fine_role=角色1,角色2

$fine_position获取部门职位,返回值为一个由部门和职位组成的数组

1)若登录用户为「人力资源-部长」

$fine_position={"departments":"人力资源","jobTitle":"部长"}

2)若登录用户为「人力资源-部长」兼「领导部-部长」

$fine_position={"departments":"人力资源","jobTitle":"部长"},{"departments":"领导部","jobTitle":"部长"}

3)若登录用户无部门职位

该参数值为空

GETUSERDEPARTMENTS()

获取部门职位里面的部门

若部门存在多个层级,返回全部层级

若存在多个部门,返回全部部门

1)若登录用户为「人力资源-部长」

GETUSERDEPARTMENTS()=人力资源

2)若登录用户为「销售部-华东销售部-组长」

GETUSERDEPARTMENTS()=销售部,华东销售部

3)若登录用户为「人力资源-部长」兼「领导部-部长」

GETUSERDEPARTMENTS()=人力资源,领导部

4)若登录用户无部门

该参数值为空

GETUSERDEPARTMENTS(X)

获取部门职位里面的第X层部门

若不存在X层部门,则返回空值

1)若登录用户为「销售部-华东销售部-华东销售1组-组长」

GETUSERDEPARTMENTS(3)=华东销售1组

GETUSERDEPARTMENTS(3,2)=华东销售1组,华东销售部

2)若登录用户为「销售部-华东销售部-组长」

GETUSERDEPARTMENTS(3)为空值

GETUSERDEPARTMENTS(3,2)=华东销售部

GETUSERJOBTITLES()

获取部门职位里面的职位

若存在多个职位,返回全部职位

1)若登录用户为「人力资源-部长」

GETUSERJOBTITLES()=部长

2)若登录用户为「人力资源-部长」兼「领导部-president」

GETUSERJOBTITLES()=部长,president

3)若登录用户无职位

该参数值为空

2. 示例一:根据登录名限制数据内容编辑

本文示例:

数据决策系统中存在用户sunlin和hanwen。

数据库「销量」表中,存在数据列「英文简称」,该列数据和数据决策系统中的用户名对应。

根据「销量」表创建了模板「根据登录名限制数据内容」并挂载到数据决策系统目录中。

sunlin和hanwen登录系统,查看该模板,只能看到自己的销售数据,看不到其他内容。

注:本章使用的是数据集参数作为示例,用户也可使用模板数据集。

2.1 新建模板

打开设计器,新建一张普通报表。

新建数据库查询ds1:SELECT * FROM 销量 where 英文简称='${fine_username}'

获取登录系统的用户名,例如登录用户名为sunlin,那么$fine_username=sunlin。

如下图所示:

2.2 设计模板

模板样式设计如下图所示:

2.3 平台挂载模板

管理员登录数据决策系统,点击「管理系统>目录管理」,选择「管理目录」,点击「添加模板」。

选择上一节制作的模板「根据登录名限制数据内容」,点击「下一步」。挂载类型选择「预览」,展示终端勾选「PC」,点击「确定」。如下图所示:

2.4 配置模板查看权限

管理员登录数据决策系统,点击「管理系统>权限管理>普通权限配置」。

选择权限载体为「所有部门」,为其分配目录「根据登录名限制数据内容」的「查看」权限,如下图所示:

2.5 效果预览

用户sunlin(sunlin,123456)登录数据决策系统,查看该模板,只能看到自己的销售内容。如下图所示:

用户hanwen(hanwen,123456)登录数据决策系统,查看该模板,只能看到自己的销售内容。如下图所示:

2.6 已完成模板

已完成模板请参见:根据登录名限制数据内容.cpt

注:请确保平台存在模板中对应的用户sunlin和hanwen,否则无法正确展示最终效果。

3. 示例二:根据登录角色限制显示行列编辑

希望不同角色访问模板时,查看到的模板列数不同、行列颜色不同。可以给行列添加条件属性设置行高、列宽、背景等

本章示例:

数据决策系统中有角色「编外人员」,用户Anna属于该角色,用户Alice不属于该角色。

目录中挂载了一张模板,模板中存在列「销量」。

不属于角色「编外人员」的用户Alice登录数据决策系统查看该模板时,可以看到列「销量」。

属于角色「编外人员」的用户Anna登录数据决策系统查看该模板时,看不到列「销量」。

3.1 新建模板

打开设计器,新建一张普通报表。

新建数据库查询ds1:SELECT * FROM 销量

如下图所示:

3.2 设计模板

模板样式设计如下图所示:

3.3 设置条件属性

选中E2单元格,点击右侧配置栏「条件属性」,新增一个条件属性。

设置属性为列宽=0毫米。设置条件类型为公式,公式内容为$fine_role='编外人员',点击「增加」,如下图所示:

注:若一个用户有多个角色,公式为find('编外人员',$fine_role)>0

3.4 平台挂载模板

管理员登录数据决策系统,点击「管理系统>目录管理」,选择「管理目录」,点击「添加模板」。

选择上一节制作的模板「根据登录角色限制显示行列」,点击「下一步」。挂载类型选择「预览」,展示终端勾选「PC」,点击「确定」。如下图所示:

3.5 配置模板查看权限

管理员登录数据决策系统,点击「管理系统>权限管理>普通权限配置」。

选择权限载体为「所有部门」,为其分配目录「根据登录角色限制显示行列」的「查看」权限,如下图所示:

3.6 效果预览

不属于角色「编外人员」的用户Alice(Alice,123456)登录数据决策系统查看该模板时,可以看到列「销量」。如下图所示:

属于角色「编外人员」的用户Anna(Anna,123456)登录数据决策系统查看该模板时,看不到列「销量」。如下图所示:

3.7 已完成模板

已完成模板请参见:根据登录角色限制显示行列.cpt