Spaces:
Paused
Paused
File size: 713 Bytes
48d903a 553c00b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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
}
|