反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

权限细粒度参数控制

  • 文档创建者:文档助手1
  • 历史版本:33
  • 最近更新:Carly 于 2022-09-28
  • 1. 概述

    1.1 版本

    报表服务器版本
    10.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

    附件列表


    主题: 数据决策系统
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526