Snapper权限框架 Snapper权限框架
首页
文档
  • 权限配置演示 (opens new window)
  • 业务系统演示 (opens new window)
问答
企业版授权
更新日志
github (opens new window)
gitee (opens new window)
首页
文档
  • 权限配置演示 (opens new window)
  • 业务系统演示 (opens new window)
问答
企业版授权
更新日志
github (opens new window)
gitee (opens new window)
  • 问答
    • 能看到别人的数据,但不能更新和删除
    • 请假了,生成临时授权码,临时授权给同事帮我做(同一账号授权码登录)
    • 部门经理能看到部门下所有人的数据,A主管负责一二组,只能看到一二组数据
    • 兼职多个部门,不同部门任不同职位,不同职位操作不同数据
    • 对某个用户查看某个功能时隐藏某列数据
    • 实时委托绑定绑定,即某个订单客服为A时能看到售后B录入的费用数据,B售后同样能看到A客服录入的费用
    • 查看与”我“关联的(业务关联,比如销售是我,客服是我)数据,同时销售经理和客服经理都分别能看到对应部门数据
    • 临时追加权限条件,查看条件允许数据(比如查看所有供应商为可口可乐的数据)
    • 换人不换职位,不需更改权限(例如张三卸任研发部“技术经理”,李四就任“技术经理”)
    • 人员换部门,不需更改权限(原部门对应的经理将看不到对应的数据,新部门的经理能看到对应的数据)
    • 自定义查看/操作某些人/组的数据,排除某些人/组的数据
    • 某些账号只能单账号登录,某些账号可以账号同时登录
    • 对“销售”人员进行忽略分公司过滤,即只要销售是”我“就是看到数据,不管是哪个分公司的数据
    • 允许某个IP段内的第三方用户查看某些授权(临时授权)数据
  • 问答
frog
2023-08-12
目录

问答

# 问答

  • 能看到别人的数据,但不能更新和删除
  • 请假了,生成临时授权码,临时授权给同事帮我做(同一账号授权码登录)
  • 部门经理能看到部门下所有人的数据,A主管负责一二组,只能看到一二组数据
  • 兼职多个部门,不同部门任不同职位,不同职位操作不同数据
  • 对某个用户查看某个功能时隐藏某列数据
  • 实时委托绑定绑定,即某个订单客服为A时能看到售后B录入的费用数据,B售后同样能看到A客服录入的费用
  • 查看与”我“关联的(业务关联,比如销售是我,客服是我)数据,同时销售经理和客服经理都分别能看到对应部门数据
  • 临时追加权限条件,查看条件允许数据(比如查看所有供应商为可口可乐的数据)
  • 换人不换职位,不需更改权限(例如张三卸任研发部“技术经理”,李四就任“技术经理”)
  • 人员换部门,不需更改权限(原部门对应的经理将看不到对应的数据,新部门的经理能看到对应的数据)
  • 自定义查看/操作某些人/组的数据,排除某些人/组的数据
  • 某些账号只能单账号登录,某些账号可以账号同时登录
  • 对“销售”人员进行忽略分公司过滤,即只要销售是”我“就是看到数据,不管是哪个分公司的数据
  • 允许某个IP段内的第三方用户查看某些授权(临时授权)数据

# 能看到别人的数据,但不能更新和删除

提示

更新和删除方法请添加@Action和@ActionConnect标签进行数据权限过滤!

方法一:在授权管理中,选择”个人“/"用户组",选择对应的功能(查询功能),在”功能权限中“,选择”指定范围“,在下面的组织列表中选择要查看相关人员的数据,请参考界面进行配置! 授权管理

方法二:也可以通过PermContext在编程时进行指定某些人的委托

# 请假了,生成临时授权码,临时授权给同事帮我做(同一账号授权码登录)

注意

授权码只能由一个人登录,并且在特定的授权码登录页进行登录!

用户在登录业务系统后,点击右上角”个人头像“->”个人中心“中设置授权码及有效期,点击更新信息! 授权码

# 部门经理能看到部门下所有人的数据,A主管负责一二组,只能看到一二组数据

  1. 在”职位管理“中,对应的部门下,新建职位”部门经理“,”权限范围“选择”本组织“,点击保存,该职位将会看到部门下所有人的数据 同样的操作,新建职位主管,”权限范围选择“用户自定义”,选中负责的组织,点击保存,该职位将只看到对应组织下的数据
  2. 在“组织架构”中,选择设置职位的组织,选择人员“双击”选择职位,进行保存

职位创建

# 兼职多个部门,不同部门任不同职位,不同职位操作不同数据

提示

用户登录时只能选择一个组织进行登录,切换组织需要重新登录!

  • 系统支持一个用户可以在多个部门中,在所需兼职的部门中,新建对应的职位,分配对应的数据权限,同时职位可以选择“分配角色”,对直接进行角色分配
  • 在“组织架构”中选择“分配用户”将用户分配到此架构,双击用户,设置职位,分配上对应的职位

# 对某个用户查看某个功能时隐藏某列数据

提示

列数据权限功能,只针对SELECT查询,更新操作和删除操作不支持此功能!

打开”授权管理“,选择用户,选择对应的功能,切换到”列数据权限“标签卡,选择对应的表,勾选左边的列,点击”排除“, 点击保存。

# 实时委托绑定绑定,即某个订单客服为A时能看到售后B录入的费用数据,B售后同样能看到A客服录入的费用

此种权限因为是实时的,运行时才知道提单对应的客服和售后,通过PermContext来解决,相关代码片段为


String service = order.getService();
String afterSale = order.getAfterSale();

if (currentUserName().equals(service)) {
    PermContext.addUserNos(afterSale);
}
if (currentUserName().equals(afterSale)) {
    PermContext.addUserNos(service);
}

1
2
3
4
5
6
7
8
9
10
11

# 查看与”我“关联的(业务关联,比如销售是我,客服是我)数据,同时销售经理和客服经理都分别能看到对应部门数据

在系统中,可通过TAG绑定来解决问题,假设客服的TAG为SERVICE,销售的TAG为SALLER,对应的方法为查询订单,则配置为

@Action(value = "ORDER_SEARCH")
@ActionConnect(value = {"listOrder","countOrder", 
    userAuthColumn= {UserTag.SERVICE + Strings.HASH + "service_code", UserTag.SALLER + Strings.HASH + "seller_code"},
    groupAuthColumn = {UserTag.SERVICE + Strings.HASH + "service_code", UserTag.SALLER + Strings.HASH + "seller_code"})}
@override

public SearchResult<OrderDto> searchOrder(OrderDto order, int pageNo, int pageSize) {
    int count = baseMapper.selectOrder(order);
    if (count == 0) return new SearchResult<>();
    return new SearchResult(mapper(baseMapper.listOrder(order, pageNo, offset(pageNo, pageSize))), count);
}
1
2
3
4
5
6
7
8
9
10
11

# 临时追加权限条件,查看条件允许数据(比如查看所有供应商为可口可乐的数据)

提示

此配置不影响正常查询条件,并且不影响原有数据权限,只是追加权限!

打开”授权管理“,选择用户,选择对应的功能,切换到”业务数据权限“, ”OR条件“选中, 选择”对应表格“,在下面的列表中选中”供应商“列,条件选择”等于“,值输入”可口可乐“

业务数据权限

# 换人不换职位,不需更改权限(例如张三卸任研发部“技术经理”,李四就任“技术经理”)

打开”组织架构“,选中对应的部门,会列出对应的人员,双击人员,职位中选择”清空“,点击保存, 选中需要设置的另一个人员,双击打开,职位选中对应的职位,点击保存

# 人员换部门,不需更改权限(原部门对应的经理将看不到对应的数据,新部门的经理能看到对应的数据)

打开“组织架构”,选中对应的部门,选中人员,点击“移动”,选择新的组织,点击确定(角色会自动切换对应的部门)

# 自定义查看/操作某些人/组的数据,排除某些人/组的数据

打开“授权管理“,选中”用户组“或”人员“,点击对应的功能,权限范围选择”自定义“,勾选需要查看的人员或组织,选中需要排除的人员或组织,点击排除,将展示在”排除列表“中,点击保存!

# 某些账号只能单账号登录,某些账号可以账号同时登录

默认情况下,账号在同一”端“只能登录一次,再次登录会将上一次登录的”顶掉“,同时系统也支持”SESSION共享“,即复制当前链接,打开浏览器新标签,转到复制的链接,账号会共享,实现两边同时操作的目的。 要满足上面的需求,在”用户管理“中双击对应的用户,登录模式选择“共享登录”

共享登录

# 对“销售”人员进行忽略分公司过滤,即只要销售是”我“就是看到数据,不管是哪个分公司的数据

假设销售的TAG为SALLER,对应的方法为查询提单,则配置为

@Action(value = "ORDER_SEARCH", ignoreCompanyScopeTags = UserTag.SALLER)
@ActionConnect(value = {"listOrder","countOrder", 
    userAuthColumn= {UserTag.SALLER + Strings.HASH + "seller_code"},
    groupAuthColumn = {UserTag.SALLER + Strings.HASH + "seller_code"}),
}
@override

public SearchResult<OrderDto> searchOrder(OrderDto order, int pageNo, int pageSize) {
    int count = baseMapper.selectOrder(order);
    if (count == 0) return new SearchResult<>();
    return new SearchResult(mapper(baseMapper.listOrder(order, pageNo, offset(pageNo, pageSize))), count);
}
1
2
3
4
5
6
7
8
9
10
11
12

# 允许某个IP段内的第三方用户查看某些授权(临时授权)数据

提示

接入用户都会绑定系统内部的用户,从而统一上线角色配置和数据权限配置功能!

打开”接入用户“,点击”新建“,APPID和APPKEY自动生成,设置IP白名单,白名单支持192.168.10.10/24格式,绑定用户,点击保存

接入用户

Theme by Vdoing | Copyright © 2023-2024
Frog

鲁ICP备2023023334号-1

鲁公网安备 37021302001133号

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式