auth.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package middleware
  2. import (
  3. "kpt-pasture/config"
  4. commonPb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/common"
  5. "gitee.com/xuyiping_admin/pkg/apierr"
  6. "gitee.com/xuyiping_admin/pkg/jwt"
  7. "net/http"
  8. "strings"
  9. "github.com/gin-gonic/gin"
  10. )
  11. const (
  12. Authorization = "Authorization"
  13. ToKenPrefix = "Bearer "
  14. UserName = "userName"
  15. FarmId = "FarmId"
  16. XRequestId = "X-Request-Id"
  17. LanguageContent = "languageContent"
  18. Language = "language"
  19. )
  20. func GetToken(c *gin.Context) string {
  21. value := c.Request.Header.Get(Authorization)
  22. if value != "" && strings.HasPrefix(value, ToKenPrefix) {
  23. return strings.TrimPrefix(value, ToKenPrefix)
  24. }
  25. return ""
  26. }
  27. func GetXRequestId(c *gin.Context) string {
  28. item := c.Request.Header.Get(XRequestId)
  29. return item
  30. }
  31. func GetFarmId(c *gin.Context) string {
  32. return c.Request.Header.Get(FarmId)
  33. }
  34. func unauthorized(c *gin.Context) {
  35. c.AbortWithStatusJSON(http.StatusUnauthorized, apierr.WithContext(c, commonPb.Error_UNAUTHORIZED))
  36. }
  37. func authorization(c *gin.Context) string {
  38. if v := c.GetHeader("Authorization"); v != "" {
  39. return v
  40. }
  41. if v := c.GetHeader("authorization"); v != "" {
  42. return v
  43. }
  44. return ""
  45. }
  46. // RequireAdmin ...
  47. func RequireAdmin() gin.HandlerFunc {
  48. return func(c *gin.Context) {
  49. token := GetToken(c)
  50. if token == "" {
  51. unauthorized(c)
  52. return
  53. }
  54. tokenVerifier := jwt.JWTTokenVerifier{PublicKey: config.Options().JwtTokenKeyConfig.PublicKey}
  55. userName, err := tokenVerifier.ParseToken(token)
  56. if err != nil {
  57. unauthorized(c)
  58. return
  59. }
  60. c.Set(UserName, userName)
  61. c.Set(FarmId, GetFarmId(c))
  62. c.Set(XRequestId, GetXRequestId(c))
  63. c.Next()
  64. }
  65. }