41 lines
767 B
Go
41 lines
767 B
Go
package utils
|
|
|
|
import (
|
|
"app/models"
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func ParseToken(tokenString string) (string, error) {
|
|
err := godotenv.Load("./config/.env")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
secret := os.Getenv("SECRET")
|
|
|
|
claims := new(models.JwtClaims)
|
|
|
|
token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) {
|
|
// Provide the same key used for signing the token
|
|
return []byte(secret), nil
|
|
})
|
|
if err != nil {
|
|
// Handle error, failed to parse the token
|
|
return "", err
|
|
}
|
|
|
|
if !token.Valid {
|
|
// Handle invalid token
|
|
return "", fmt.Errorf("invalid token")
|
|
}
|
|
|
|
fmt.Println(claims)
|
|
|
|
return strconv.FormatUint(uint64(claims.Jwt_id), 10), nil
|
|
|
|
}
|