base_auth.go 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package controllers
  2. import (
  3. "fmt"
  4. "hongze/hongze_mobile_admin/models/custom"
  5. "hongze/hongze_mobile_admin/models/tables/h5_admin_session"
  6. services "hongze/hongze_mobile_admin/service"
  7. "hongze/hongze_mobile_admin/utils"
  8. "net/url"
  9. "strconv"
  10. "strings"
  11. )
  12. //需要授权token的基类
  13. type BaseAuth struct {
  14. BaseCommon
  15. AdminWx *custom.AdminWx `description:"管理员信息"`
  16. Token string `description:"用户token"`
  17. Session *h5_admin_session.H5AdminSession `description:"用户session"`
  18. }
  19. func (this *BaseAuth) Prepare() {
  20. var requestBody string
  21. method := this.Ctx.Input.Method()
  22. if method == "GET" {
  23. requestBody = this.Ctx.Request.RequestURI
  24. } else {
  25. requestBody, _ = url.QueryUnescape(string(this.Ctx.Input.RequestBody))
  26. }
  27. fmt.Println("requestBody:", requestBody)
  28. ip := this.Ctx.Input.IP()
  29. fmt.Println("ip:", ip)
  30. apiLog.Println("请求地址:", this.Ctx.Input.URI(), "RequestBody:", requestBody, "IP:", ip)
  31. authorization := this.Ctx.Input.Header("Authorization")
  32. //if authorization == "" {
  33. // cookie := this.Ctx.GetCookie("rddp_access_token")
  34. // utils.FileLog.Info("authorization:%s,cookie:%s", authorization, cookie)
  35. // authorization = cookie
  36. //}
  37. uri := this.Ctx.Input.URI()
  38. utils.FileLog.Info("URI:%s", uri)
  39. if strings.Contains(uri, "/api/wechat/login") {
  40. authorization = ""
  41. }
  42. if authorization != "" {
  43. session, err := h5_admin_session.GetSessionByToken(authorization)
  44. if err != nil {
  45. if err.Error() == utils.ErrNoRow() {
  46. this.TokenMsgError("信息已变更,请重新登陆!", "Token 信息已变更:Token: "+authorization)
  47. return
  48. }
  49. this.TokenMsgError("网络异常,请稍后重试!", "获取用户信息异常,Err:"+err.Error())
  50. return
  51. }
  52. if session == nil {
  53. this.TokenMsgError("网络异常,请稍后重试!", "session is empty")
  54. return
  55. }
  56. this.Session = session
  57. var adminWx *custom.AdminWx
  58. if session.AdminId > 0 {
  59. tmpAdminWx, tmpErr := services.GetAdminUserItemByAdminId(session.AdminId, utils.WxPlatform)
  60. adminWx = tmpAdminWx
  61. err = tmpErr
  62. } else if session.OpenId != "" {
  63. tmpAdminWx, tmpErr := services.GetAdminUserItemByOpenId(session.OpenId)
  64. adminWx = tmpAdminWx
  65. err = tmpErr
  66. } else {
  67. this.TokenMsgError("数据异常!", "session is empty")
  68. return
  69. }
  70. //wxUser, err := models.GetWxUserItemByUserId(session.UserId)
  71. //wxUser, err := services.GetWxUserItemByOpenId(session.OpenId)
  72. if err != nil {
  73. //没有找到记录
  74. if err.Error() == utils.ErrNoRow() {
  75. this.TokenMsgError("信息已变更,请重新登陆!", "获取admin 信息失败 "+strconv.Itoa(session.AdminId))
  76. return
  77. }
  78. //如果不是登录绑定接口,同时报错信息不是用户未绑定的情况下,那么就返回异常
  79. if !strings.Contains(uri, "/api/admin/login") && err != services.ERR_ADMIN_NOT_BIND {
  80. this.TokenMsgError("网络异常,请稍后重试!", "获取admin_wx信息异常,Err:"+err.Error())
  81. return
  82. }
  83. }
  84. if adminWx == nil {
  85. this.TokenMsgError("网络异常,请稍后重试!", "admin is empty")
  86. return
  87. }
  88. this.AdminWx = adminWx
  89. }
  90. this.Token = authorization
  91. }