auth.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package middlewares
  2. import (
  3. "net/http"
  4. "zhiyuan/pkg/app"
  5. "zhiyuan/pkg/errcode"
  6. adminParam "zhiyuan/pkg/param/admin"
  7. "zhiyuan/services/admin"
  8. "zhiyuan/services/user"
  9. "zhiyuan/services/work/worker"
  10. "github.com/gin-gonic/gin"
  11. )
  12. func Auth(tokenType string) gin.HandlerFunc {
  13. return func(c *gin.Context) {
  14. token := c.GetHeader("Access-Token")
  15. if token == "" {
  16. app.Response(c, http.StatusUnauthorized, errcode.TokenEmpty, nil)
  17. c.Abort()
  18. return
  19. }
  20. isValid := false
  21. var errCode errcode.Err
  22. switch tokenType {
  23. case "admin":
  24. adminInfo, code := admin.CheckToken(token, adminParam.Entry.PC)
  25. if adminInfo != nil {
  26. c.Set("adminID", adminInfo.ID)
  27. isValid = true
  28. errCode = code
  29. }
  30. case "leader":
  31. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Leader)
  32. if adminInfo != nil {
  33. c.Set("adminID", adminInfo.ID)
  34. isValid = true
  35. errCode = code
  36. }
  37. case "servicer":
  38. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Servicer)
  39. if adminInfo != nil {
  40. c.Set("adminID", adminInfo.ID)
  41. isValid = true
  42. errCode = code
  43. }
  44. case "manager":
  45. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Manager)
  46. if adminInfo != nil {
  47. c.Set("adminID", adminInfo.ID)
  48. isValid = true
  49. errCode = code
  50. }
  51. case "material":
  52. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Material)
  53. if adminInfo != nil {
  54. c.Set("adminID", adminInfo.ID)
  55. isValid = true
  56. errCode = code
  57. }
  58. case "user":
  59. userInfo, code := user.CheckToken(token)
  60. if userInfo != nil {
  61. c.Set("userID", userInfo.ID)
  62. isValid = true
  63. errCode = code
  64. }
  65. case "worker":
  66. workerInfo, code := worker.CheckToken(token)
  67. if workerInfo != nil {
  68. c.Set("workerID", workerInfo.ID)
  69. isValid = true
  70. errCode = code
  71. }
  72. case "work":
  73. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Work)
  74. if adminInfo != nil {
  75. c.Set("adminID", adminInfo.ID)
  76. isValid = true
  77. errCode = code
  78. }
  79. case "mobile":
  80. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Mobile)
  81. if adminInfo != nil {
  82. c.Set("adminID", adminInfo.ID)
  83. isValid = true
  84. errCode = code
  85. }
  86. case "final":
  87. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Final)
  88. if adminInfo != nil {
  89. c.Set("adminID", adminInfo.ID)
  90. isValid = true
  91. errCode = code
  92. }
  93. case "dispatch":
  94. adminInfo, code := admin.CheckToken(token, adminParam.Entry.Dispatch)
  95. if adminInfo != nil {
  96. c.Set("adminID", adminInfo.ID)
  97. isValid = true
  98. errCode = code
  99. }
  100. }
  101. if isValid == false {
  102. app.Response(c, http.StatusUnauthorized, errCode, nil)
  103. c.Abort()
  104. return
  105. }
  106. c.Next()
  107. }
  108. }