filter.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package routers
  2. import (
  3. "Cold_GoodsOrder/Nats/NatsServer"
  4. "Cold_GoodsOrder/lib"
  5. "Cold_GoodsOrder/models/Account"
  6. "github.com/beego/beego/v2/server/web/context"
  7. "log"
  8. "strings"
  9. )
  10. func RBACFilter(ctx *context.Context) {
  11. //过滤/v3/Order/GetDeviceData接口不验证登录
  12. log.Println(ctx.Request.URL.String())
  13. if strings.Contains(ctx.Request.URL.String(), "/v3/Order/GetDeviceDataNot") || strings.Contains(ctx.Request.URL.String(), "/Cold_GoodsOrder/v3/Order/Test") {
  14. return
  15. }
  16. err, User_r, T_pid := NatsServer.Verification(ctx.Input.Query("User_tokey"), ctx.GetCookie("User_tokey"))
  17. if err != nil {
  18. if err.Error() == "请重新登录!" {
  19. ctx.Output.JSON(lib.JSONS{Code: 201, Msg: err.Error()}, true, false)
  20. } else {
  21. ctx.Output.JSON(lib.JSONS{Code: 202, Msg: err.Error()}, true, false)
  22. }
  23. return
  24. }
  25. Account.User_r = &User_r
  26. Account.T_pid = &User_r.T_pid
  27. if T_pid > 0 {
  28. Account.T_pid = &T_pid
  29. }
  30. index := strings.Index(ctx.Request.URL.Path, "/v3")
  31. if index == -1 {
  32. data := lib.JSONS{Code: 202, Msg: "无权访问!"}
  33. ctx.Output.JSON(data, true, false)
  34. }
  35. flag := NatsServer.CheckUserPermissions(Account.User_r.T_power, ctx.Request.URL.Path[index:])
  36. if !flag {
  37. data := lib.JSONS{Code: 202, Msg: "无权访问!"}
  38. ctx.Output.JSON(data, true, false)
  39. return
  40. }
  41. }