From c856efe2bae161976c2f8d9899f0ee1d1b77056e Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Sun, 9 Jun 2024 19:38:08 +0200 Subject: [PATCH] Encode: check for errors while setting claim fields Fixes #90 --- jwtauth.go | 4 +++- jwtauth_test.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/jwtauth.go b/jwtauth.go index a03731a..6199448 100644 --- a/jwtauth.go +++ b/jwtauth.go @@ -122,7 +122,9 @@ func VerifyToken(ja *JWTAuth, tokenString string) (jwt.Token, error) { func (ja *JWTAuth) Encode(claims map[string]interface{}) (t jwt.Token, tokenString string, err error) { t = jwt.New() for k, v := range claims { - t.Set(k, v) + if err := t.Set(k, v); err != nil { + return nil, "", err + } } payload, err := ja.sign(t) if err != nil { diff --git a/jwtauth_test.go b/jwtauth_test.go index e2580cb..d9e2c52 100644 --- a/jwtauth_test.go +++ b/jwtauth_test.go @@ -279,6 +279,23 @@ func TestMore(t *testing.T) { } } +func TestEncodeClaims(t *testing.T) { + claims := map[string]interface{}{ + "key1": "val1", + "key2": 2, + "key3": time.Now(), + "key4": []string{"1", "2"}, + } + claims[jwt.JwtIDKey] = 1 + if _, _, err := TokenAuthHS256.Encode(claims); err == nil { + t.Fatal("encoding invalid claims succeeded") + } + claims[jwt.JwtIDKey] = "123" + if _, _, err := TokenAuthHS256.Encode(claims); err != nil { + t.Fatalf("unexpected error encoding valid claims: %v", err) + } +} + // // Test helper functions //