mirror of
https://github.com/hanzoai/commerce.git
synced 2026-10-30 15:08:42 +00:00
Multi-tenant commerce and billing: orders, subscriptions, invoices, plans, usage metering and a credit ledger. One Go binary. MIT OR Apache-2.0. Claude-Session: https://claude.ai/code/session_01SAtaDFm8VDiWrhYHNNtxMw
37 lines
767 B
Go
37 lines
767 B
Go
package jwt
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
|
|
"github.com/golang-jwt/jwt"
|
|
"github.com/hanzoai/commerce/log"
|
|
)
|
|
|
|
// Like Decode but no validation, don't forget to actually validate using decode
|
|
func Peek(tokenString string, claims Claimable) error {
|
|
// Make Sure Claims is a struct pointer
|
|
parts := strings.Split(tokenString, ".")
|
|
if len(parts) != 3 {
|
|
log.Error("Invalid Segments")
|
|
return InvalidNumberOfSegments
|
|
}
|
|
|
|
// Parse Claims
|
|
var (
|
|
claimBytes []byte
|
|
err error
|
|
)
|
|
|
|
if claimBytes, err = jwt.DecodeSegment(parts[1]); err != nil {
|
|
log.Error("Malformed Token %v", err)
|
|
return MalformedToken
|
|
}
|
|
if err := json.Unmarshal(claimBytes, claims); err != nil {
|
|
log.Error("Malformed Token %v", err)
|
|
return MalformedToken
|
|
}
|
|
|
|
return nil
|
|
}
|