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

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

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

【技术开发】AI智能分析/视频云服务平台EasyCVR通过子用户登录无法查看所属分组,如何调整?_第1张图片

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

【技术开发】AI智能分析/视频云服务平台EasyCVR通过子用户登录无法查看所属分组,如何调整?_第2张图片

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

参考代码如下:

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)

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

【技术开发】AI智能分析/视频云服务平台EasyCVR通过子用户登录无法查看所属分组,如何调整?_第3张图片

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

你可能感兴趣的:(EasyCVR,linux,mysql,智能视频分析)