视频智能安防监控系统EasyNVR是如何做到在平台内屏蔽部分菜单或者logo标识的?

一般在视频智能安防监控系统EasyNVR的标题都会显示在登录页或者在标题栏,同时EasyNVR的版本信息以及授权信息内也会存在EasyNVR的标识。目前登录页及在标题栏的字样可以自由修改,用户可根据自己的项目名称来对系统进行命名,但是对于授权信息的标识,只可通过隐藏来达到需求。

比如我们有的项目团队就需要将这些信息隐藏,因此我们可以通过添加字段的方式,使其屏蔽相关菜单,以达到客户的需求。

这些显示内容和菜单都是前端自己展示的,所以EasyNVR后端提供一个字段,即shield_menu这个参数,为0时则不隐藏,为1时隐藏。

func (h *APIHandler) GetServerInfo(c *gin.Context) {
   ack := NewMsgAck()
   ack.EasyDarwin.Header.MessageType = MSG_SC_SERVER_INFO_ACK
   sec := utils.Conf().Section("base_config")
   shieldMenu := sec.Key("shield_menu").MustBool(false)
   server := fmt.Sprintf("%s/%s (Build/%s; Platform/%s;)", "EasyNVR", global.BuildVersion, BuildTime.Format(utils.BuildTimeLayout), strings.Title(runtime.GOOS))
   if shieldMenu {
      server = fmt.Sprintf("%s (Build/%s; Platform/%s;)", global.BuildVersion, BuildTime.Format(utils.BuildTimeLayout), strings.Title(runtime.GOOS))
   }
   ack.EasyDarwin.Body = map[string]interface{}{
      "Authorization":    license.Authorization,
      "VersionType":      fmt.Sprintf("%v", license.VersionType),
      "Hardware":         strings.ToUpper(runtime.GOARCH),
      "InterfaceVersion": InterfaceVersion,
      "IsDemo":           sec.Key("demo").MustBool(false),
      "IsRtsp":           sec.Key("enable_rtsp").MustBool(false),
      "LiveStreamAuth":   sec.Key("live_streaming_auth").MustBool(false),
      "ChannelCount":     license.ChannelCount,
      "RemainDays":       license.RemainDays(),
      "ActiveOnline":     license.ActiveOnline,
      "RunningTime":      utils.UpTimeString(),
      "ServerTime":       utils.DateTime(time.Now()),
      "StartUpTime":      utils.DateTime(utils.StartTime),
      "Server":           server,
      "shieldMenu":       shieldMenu,
   }
   c.IndentedJSON(http.StatusOK, ack)
}

在获取服务信息接口处添加一个shieldMenu属性返回给前端,为0时则不隐藏,为1时则隐藏相关字段和菜单,因此只要按需求修改该参数即可。

解决效果如下:

原文地址:https://www.cnblogs.com/EasyNVR/p/14582981.html