This commit is contained in:
vipg
2026-02-09 17:43:42 +08:00
parent 25c4628b5f
commit c7b11dca35
5 changed files with 83 additions and 22 deletions

View File

@@ -0,0 +1,49 @@
package auth
import (
"errors"
"time"
"common/utils"
"github.com/golang-jwt/jwt/v5"
)
func GenerateToken(userID string) (string, error) {
secret := utils.GetEnv("JWT_SECRET", "")
if secret == "" {
return "", errors.New("jwt_secret_missing")
}
ttlStr := utils.GetEnv("JWT_TTL", "24h")
ttl, err := time.ParseDuration(ttlStr)
if err != nil {
return "", err
}
issuer := utils.GetEnv("JWT_ISSUER", "trading-assistant")
now := time.Now()
claims := jwt.RegisteredClaims{
Subject: userID,
Issuer: issuer,
IssuedAt: jwt.NewNumericDate(now),
ExpiresAt: jwt.NewNumericDate(now.Add(ttl)),
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
return token.SignedString([]byte(secret))
}
func ParseToken(tokenStr string) (string, error) {
secret := utils.GetEnv("JWT_SECRET", "")
if secret == "" {
return "", errors.New("jwt_secret_missing")
}
var claims jwt.RegisteredClaims
tkn, err := jwt.ParseWithClaims(tokenStr, &claims, func(token *jwt.Token) (interface{}, error) {
return []byte(secret), nil
})
if err != nil {
return "", err
}
if !tkn.Valid {
return "", errors.New("token_invalid")
}
return claims.Subject, nil
}

View File

@@ -3,3 +3,4 @@ module common
go 1.25.7
require github.com/jackc/pgx/v5 v5.6.0
require github.com/golang-jwt/jwt/v5 v5.2.1