Row-proxy / internal /auth /jwt.go
ss22345's picture
refactor: split internal package into domain-based sub-packages
48d903a
raw
history blame
713 Bytes
package auth
import (
"encoding/base64"
"encoding/json"
"strings"
)
type JWTPayload struct {
ID string `json:"id"`
}
func DecodeJWTPayload(token string) (*JWTPayload, error) {
parts := strings.Split(token, ".")
if len(parts) < 2 {
return nil, nil
}
payload := parts[1]
// Add padding if needed
if padding := 4 - len(payload)%4; padding != 4 {
payload += strings.Repeat("=", padding)
}
decoded, err := base64.URLEncoding.DecodeString(payload)
if err != nil {
decoded, err = base64.RawURLEncoding.DecodeString(parts[1])
if err != nil {
return nil, err
}
}
var result JWTPayload
if err := json.Unmarshal(decoded, &result); err != nil {
return nil, err
}
return &result, nil
}