AI智能分析/视频云服务平台EasyCVR通过子用户登录无法查看所属分组如何调整?
针对EasyCVR安防视频云服务平台的用户管理和角色管理方面,我们发现在一些情况下会出现部分通道或者分组无法查看的情况。在上一篇博文中,我们解决了EasyCVR管理员用户无法查看分组下通道信息的问题,本文我们主要处理另一个关于通道分组的问题。
在EasyCVR管理员后台,给用户分配通道过后,通过子用户登录无法查看到该通道所属分组的情况。
通过检查代码,我们发现了问题所在。现在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)
修复后的通道分组则显示正常:
如果大家对EasyCVR感兴趣 ,欢迎持续关注我们的更新。