CasaOS/pkg/utils/jwt/jwt_helper.go
2022-06-15 16:07:42 +08:00

64 lines
1.5 KiB
Go

package jwt
import (
"fmt"
"net/http"
"time"
"github.com/IceWhaleTech/CasaOS/model"
"github.com/IceWhaleTech/CasaOS/pkg/utils/common_err"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
"github.com/gin-gonic/gin"
)
func JWT(swagHandler gin.HandlerFunc) gin.HandlerFunc {
return func(c *gin.Context) {
var code int
code = common_err.SUCCESS
token := c.GetHeader("Authorization")
if len(token) == 0 {
token = c.Query("token")
}
if token == "" {
code = common_err.INVALID_PARAMS
}
if swagHandler == nil {
claims, err := ParseToken(token)
//_, err := ParseToken(token)
if err != nil {
code = common_err.ERROR_AUTH_TOKEN
} else if claims.VerifyExpiresAt(time.Now(), true) || claims.VerifyIssuer("casaos", true) {
code = common_err.ERROR_AUTH_TOKEN
}
}
if code != common_err.SUCCESS {
c.JSON(http.StatusOK, model.Result{Success: code, Message: common_err.GetMsg(code)})
c.Abort()
return
}
c.Next()
}
}
//get AccessToken
func GetAccessToken(username, pwd string) string {
token, err := GenerateToken(username, pwd, "casaos", 3*time.Hour*time.Duration(1))
if err == nil {
return token
} else {
loger2.NewOLoger().Fatal(fmt.Sprintf("Get Token Fail: %V", err))
return ""
}
}
func GetRefreshToken(username, pwd string) string {
token, err := GenerateToken(username, pwd, "fresh", 7*24*time.Hour*time.Duration(1))
if err == nil {
return token
} else {
loger2.NewOLoger().Fatal(fmt.Sprintf("Get Token Fail: %V", err))
return ""
}
}