Skip to content

Commit a192df9

Browse files
committed
Refactor decodeJWTSegment function
1 parent 106e72c commit a192df9

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

core/templating/template_helpers.go

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -635,27 +635,13 @@ func (t templateHelpers) jsonFromJWT(path string, token string) interface{} {
635635
return ""
636636
}
637637

638-
decode := func(seg string) (interface{}, bool) {
639-
b, err := base64.RawURLEncoding.DecodeString(seg)
640-
if err != nil {
641-
log.Error("error decoding jwt segment: ", err)
642-
return nil, false
643-
}
644-
var v interface{}
645-
if err := json.Unmarshal(b, &v); err != nil {
646-
log.Error("error unmarshalling jwt segment: ", err)
647-
return nil, false
648-
}
649-
return v, true
650-
}
651-
652-
composite := make(map[string]interface{})
653-
if h, ok := decode(parts[0]); ok {
654-
composite["header"] = h
655-
}
656-
if p, ok := decode(parts[1]); ok {
657-
composite["payload"] = p
658-
}
638+
composite := make(map[string]interface{})
639+
if h, ok := decodeJWTSegment(parts[0]); ok {
640+
composite["header"] = h
641+
}
642+
if p, ok := decodeJWTSegment(parts[1]); ok {
643+
composite["payload"] = p
644+
}
659645

660646
jsonBytes, err := json.Marshal(composite)
661647
if err != nil {
@@ -677,6 +663,22 @@ func (t templateHelpers) jsonFromJWT(path string, token string) interface{} {
677663
}
678664
}
679665

666+
// decodeJWTSegment decodes a single JWT segment (header or payload) into a generic map/array.
667+
// It returns the decoded JSON value and a boolean indicating success.
668+
func decodeJWTSegment(seg string) (interface{}, bool) {
669+
b, err := base64.RawURLEncoding.DecodeString(seg)
670+
if err != nil {
671+
log.Error("error decoding jwt segment: ", err)
672+
return nil, false
673+
}
674+
var v interface{}
675+
if err := json.Unmarshal(b, &v); err != nil {
676+
log.Error("error unmarshalling jwt segment: ", err)
677+
return nil, false
678+
}
679+
return v, true
680+
}
681+
680682
func sumNumbers(numbers []string, format string) string {
681683
var sum float64 = 0
682684
for _, number := range numbers {

0 commit comments

Comments
 (0)