Skip to content

Commit d770eb7

Browse files
committed
fix: make token backwards compatible with missing the teams prop in the JWT
1 parent 240a93d commit d770eb7

2 files changed

Lines changed: 26 additions & 5 deletions

File tree

internal/pkg/jwt/jwt.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,21 @@ func ParseTokenString(tokenString, key string) (*PayloadUser, error) {
3232
return nil, err
3333
}
3434
if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
35-
teamFromClaims := claims["teams"].([]interface{})
35+
var teamFromClaims []interface{}
36+
37+
switch claims["teams"].(type) {
38+
case []interface{}:
39+
teamFromClaims = claims["teams"].([]interface{})
40+
case nil:
41+
// Backwards compatible with previous tokens, nothing to do
42+
}
43+
3644
teams := make([]string, len(teamFromClaims))
3745

3846
for i, v := range teamFromClaims {
39-
teams[i] = v.(string)
47+
if stringValue, ok := v.(string); ok {
48+
teams[i] = stringValue
49+
}
4050
}
4151

4252
return &PayloadUser{

internal/pkg/jwt/jwt_test.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package jwt
22

33
import (
4-
"fmt"
54
"testing"
65

76
"github.com/stretchr/testify/assert"
@@ -38,11 +37,23 @@ func TestParseTokenString(t *testing.T) {
3837
assert.Equal(t, testTeams, payload.Teams)
3938
}
4039

41-
func TestParseTokenStringWithoutTeams(t *testing.T) {
40+
func TestParseTokenString_EmptyTeams(t *testing.T) {
4241
// setup
4342
tokenString, _ := GenerateJwtTokenString(id, login, []string{}, key)
4443

45-
fmt.Printf("tokenString: %s\n", tokenString)
44+
// execution
45+
payload, err := ParseTokenString(tokenString, key)
46+
47+
// assertion
48+
assert.NoError(t, err)
49+
assert.Equal(t, id, payload.Id)
50+
assert.Equal(t, login, payload.Login)
51+
assert.Equal(t, payload.Teams, []string{})
52+
}
53+
54+
func TestParseTokenString_NoTeams(t *testing.T) {
55+
// setup
56+
tokenString, _ := GenerateJwtTokenString(id, login, nil, key)
4657

4758
// execution
4859
payload, err := ParseTokenString(tokenString, key)

0 commit comments

Comments
 (0)