package xjwt

import (
	"github.com/golang-jwt/jwt/v5"
	"mylomen_server/common/config"
	"mylomen_server/common/dto"
	"time"
)

func GenJwtToken(claims dto.LoginTokenVo) string {
	mySigningKey := []byte(config.Instance.MyServer.JwtSigningKey)

	claims.Issuer = "mylomen.com"
	claims.IssuedAt = jwt.NewNumericDate(time.Now())

	//加密
	token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
	ss, _ := token.SignedString(mySigningKey)
	return ss
}

func ParseJwtToken(jwtToken string) (*dto.LoginTokenVo, error) {
	if jwtToken == "" || len(jwtToken) > 256 {
		return nil, nil
	}
	//parse
	parseToken, err := jwt.ParseWithClaims(jwtToken, &dto.LoginTokenVo{}, func(token *jwt.Token) (interface{}, error) {
		return []byte(config.Instance.MyServer.JwtSigningKey), nil
	})
	//check
	if userClaims, ok := parseToken.Claims.(*dto.LoginTokenVo); ok && parseToken.Valid {
		return userClaims, nil
	} else {
		return nil, err
	}
}