AI智能分析/视频云服务平台EasyCVR通过子用户登录无法查看所属分组如何调整?

针对EasyCVR安防视频云服务平台的用户管理和角色管理方面,我们发现在一些情况下会出现部分通道或者分组无法查看的情况。在上一篇博文中,我们解决了EasyCVR管理员用户无法查看分组下通道信息的问题,本文我们主要处理另一个关于通道分组的问题。

在EasyCVR管理员后台,给用户分配通道过后,通过子用户登录无法查看到该通道所属分组的情况。

14.png

15.png

通过检查代码,我们发现了问题所在。现在EasyCVR用户管理的逻辑结构是:用户绑定角色,角色绑定通道。然而近期EasyCVR的版本做了更新,更新过后的逻辑为:用户绑定角色,角色绑定分组,分组绑定设备的步骤。由于新旧版本中用户的逻辑管理出现了差异,导致按照旧版本配置的内容不生效。

其实这里还需要对代码进行优化,增加判断条件,当用户角色不是管理员的时候,去查询用户所属角色,角色包含分组,分组拥有的通道。

参考代码如下:

selectStr := fmt.Sprintf(`%s.parent_id,%s.id,%s.name,%s.channel_id,%s.parent_device_id`, labelTableName, labelTableName, labelTableName, channelTableName, channelTableName)
joinStr := fmt.Sprintf(`left join %s on %s.rid=%s.role_id 
            left join %s on %s.label_id=%s.label_id 
            left join %s on %s.channel_id=%s.channel_id
                                                      and %s.channel_device_id=%s.parent_device_id
            left join %s on %s.label_id=%s.id`, roleLabelTableName, userRoleTableName, roleLabelTableName,
   labelChannelTableName, roleLabelTableName, labelChannelTableName,
   channelTableName, labelChannelTableName, channelTableName, labelChannelTableName, channelTableName,
   //roleChannelTableName, channelTableName, labelChannelTableName,
   //labelChannelTableName, channelTableName, labelChannelTableName, channelTableName,
   labelTableName, labelChannelTableName, labelTableName)
wherestr := fmt.Sprintf(`%s.uid=?`, userRoleTableName)
dbclient = dbclient.Table(userRoleTableName).
   Select(selectStr).
   Joins(joinStr).
   Where(wherestr, uid)

修复后的通道分组则显示正常:

16.png

如果大家对EasyCVR感兴趣 ,欢迎持续关注我们的更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值