jwt_helper.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package jwt
  2. import (
  3. "fmt"
  4. "github.com/IceWhaleTech/CasaOS/model"
  5. loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
  6. oasis_err2 "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err"
  7. "github.com/gin-gonic/gin"
  8. "net/http"
  9. "time"
  10. )
  11. func JWT(swagHandler gin.HandlerFunc) gin.HandlerFunc {
  12. return func(c *gin.Context) {
  13. var code int
  14. code = oasis_err2.SUCCESS
  15. token := c.GetHeader("Authorization")
  16. if len(token) == 0 {
  17. token = c.Query("token")
  18. }
  19. if token == "" {
  20. code = oasis_err2.INVALID_PARAMS
  21. }
  22. if swagHandler == nil {
  23. claims, err := ParseToken(token)
  24. if err != nil {
  25. code = oasis_err2.ERROR_AUTH_TOKEN
  26. } else if time.Now().Unix() > claims.ExpiresAt {
  27. code = oasis_err2.ERROR_AUTH_TOKEN
  28. }
  29. }
  30. if code != oasis_err2.SUCCESS {
  31. c.JSON(http.StatusOK, model.Result{Success: code, Message: oasis_err2.GetMsg(code)})
  32. c.Abort()
  33. return
  34. }
  35. c.Next()
  36. }
  37. }
  38. //获取token
  39. func GetToken(username, pwd string) string {
  40. token, err := GenerateToken(username, pwd)
  41. if err == nil {
  42. return token
  43. } else {
  44. loger2.NewOLoger().Fatal(fmt.Sprintf("Get Token Fail: %V", err))
  45. return ""
  46. }
  47. }