权限细粒度参数控制

  • 文档创建者:文档助手1
  • 编辑次数:27次
  • 最近更新:Wendy123456 于 2020-07-14
  • 1. 概述

    1.1 版本

    报表服务器版本
    10.0

    1.2 功能简介

    用户认证 后会将报表三个固定的默认参数$fine_username$fine_role$fine_position保存在 Session 中,同时提供两个函数GETUSERDEPARTMENTS()GETUSERJOBTITLES()来分别获取部门角色的部门和职位。

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

    2. 参数介绍

    本文要介绍的内容如下表所示:

    注1:$fine_username、$fine_role、$fine_position 为报表默认参数,调用时大小写必须保持一致。

    注2:$fine_username、$fine_role、$fine_position 参数在 9.0 里分别对应 $fr_username、$fr_authority、$fr_userposition。

    类型具体内容备注
    参数$fine_username获取登录系统的用户名,例如登录用户名为 Anna,则$fine_username="Anna"
    $fine_role

    获取登录系统的角色

    若超管用户登录,$fine_role="superusers"

    若角色用户登录,例如角色「数据架构师」用户登录,$fine_role="数据架构师"i

    若部门角色登录,该参数为空,$fine_role 返回值为数组,使用concatenate($fine_role,"")即可将其转化为字符串

    注:若一个用户有多个角色,$fine_role 返回值为所有角色,例如:"数据架构师,普通角色1"

    $fine_position

    获取部门职位。返回值由部门和职位组成,为 json 格式

    例如「人力资源部长」职位登录系统,则$fine_position={"departments":"人力资源","jobTitle":"部长"}

    函数GETUSERDEPARTMENTS()

    获取部门职位里的部门。

    例如「人力资源部长」职位登录系统,则GETUSERDEPARTMENTS()="人力资源"

    若多个部门,则数组GETUSERDEPARTMENTS(3,2)返回角色该部门的第三层和第二层名字。若多个部门则返回数组,若没有第三层则只显示第二层

    GETUSERJOBTITLES()

    获取部门职位里的职位

    例如「人力资源部长」职位登录系统,则GETUSERJOBTITLES()="部长"

    3. $fine_username 示例

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

    3.1 示例一:单元格中使用

    3.1.1 准备模板

    1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:

    SELECT * FROM 销量 where 英文简称='${fine_username}'

    2)模板设计如下图所示:

    1589853535492150.png

    3.1.2 平台挂载模板

    管理员将设计好的模板挂载到数据决策系统中。

    模板挂载到平台的方法请参见:节点管理

    3.1.3 分配模板查看权限

    管理员将该模板的查看权限分配给hanwen

    管理员给用户分配权限请参见:根据用户分配权限示例

    3.1.4 效果查看

    hanwen 登录数据决策系统访问模板时,模板自动筛选 hanwen 的信息。如下图所示:

    1589853747672856.png

    3.2 示例二:参数面板中使用

    3.2.1 准备模板

    1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:

    SELECT * FROM 销量 where 英文简称='${fine_username}'

    2)模板设计如下图所示:

    1589853535492150.png

    3.2.2 添加控件

    在参数面板中添加下拉框控件查询控件

    选中下拉框控件,控件名称为fine_username,并设置数据字典。如下图所示:

    4.png

    3.2.3 效果查看

    点击分页预览,可通过销售员过滤数据。如下图所示:

    1589855506300193.png

    4. $fine_role

    4.1 示例一:角色用户

    希望不同角色访问模板时,查看到的模板列数不同、行列颜色不同。可以给行列添加条件属性设置行高、列宽、背景等,如果登录系统用户为角色用户,可以在公式中通过$fine_role进行过滤,如果是部门职位用户,则不可使用该参数进行过滤。

    注:条件属性具体内容可参见: 条件属性 

    4.1.1 准备模板

    1)在 FineReport 设计器中点击文件>新建普通报表,新建数据库查询 ds1:

    SELECT * FROM 销量 where 英文简称='${fine_username}'

    2)模板设计如下图所示:

    1589853535492150.png

    4.1.2 添加条件属性

    若 hanwen 角色为「数据架构师」,希望 hanwen 登录平台访问模板时,不能查看销量列。则选中E2单元格,添加条件属性列宽,公式为$fine_role='数据架构师',如下图所示:

    注1:为用户添加角色或部门的方法请参见:用户管理

    注2:若一个用户有多个角色,公式为find('数据架构师',$fine_role)>0

    6.png

    4.1.3 平台挂载模板

    管理员将设计好的模板挂载到数据决策系统中。

    模板挂载到平台的方法请参见:节点管理

    4.1.4 分配模板查看权限

    管理员将该模板的查看权限分配给hanwen

    管理员给用户分配权限请参见:根据用户分配权限示例

    4.1.5 效果查看

    hanwen 登录数据决策系统访问模板时,效果如下图所示:

    1589857480499388.png

    4.2 示例二:部门角色用户 

    若 hanwen 为部门职位用户,部门为销售部,职位为 sale,那么本文 4.1.2 节中公式为:GETUSERDEPARTMENTS()='销售部'GETUSERJOBTITLES()='sale',如下图所示:
    1589857812911990.png

    附件列表


    主题: 数据决策系统
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!