Skip to content

Commit 74e77e5

Browse files
authored
refactor: adopt jwt.MapClaims to replace custom MapClaims type across codebase (#342)
- Remove the custom `MapClaims` type definition - Replace `MapClaims` with `jwt.MapClaims` in `PayloadFunc`, `GetClaimsFromJWT`, `ExtractClaims`, and `ExtractClaimsFromToken` functions - Update test cases to use `jwt.MapClaims` instead of the custom `MapClaims` - Update `ConvertClaims` function to accept `jwt.MapClaims` Signed-off-by: appleboy <[email protected]>
1 parent be787cc commit 74e77e5

File tree

2 files changed

+26
-30
lines changed

2 files changed

+26
-30
lines changed

auth_jwt.go

+9-13
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ import (
1414
"github.com/youmark/pkcs8"
1515
)
1616

17-
// MapClaims type that uses the map[string]interface{} for JSON decoding
18-
// This is the default claims type if you don't supply one
19-
type MapClaims map[string]interface{}
20-
2117
// GinJWTMiddleware provides a Json-Web-Token authentication implementation. On failure, a 401 HTTP response
2218
// is returned. On success, the wrapped middleware is called, and the userID is made available as
2319
// c.Get("userID").(string).
@@ -65,7 +61,7 @@ type GinJWTMiddleware struct {
6561
// Note that the payload is not encrypted.
6662
// The attributes mentioned on jwt.io can't be used as keys for the map.
6763
// Optional, by default no additional data will be set.
68-
PayloadFunc func(data interface{}) MapClaims
64+
PayloadFunc func(data interface{}) jwt.MapClaims
6965

7066
// User can define own Unauthorized func.
7167
Unauthorized func(c *gin.Context, code int, message string)
@@ -487,7 +483,7 @@ func (mw *GinJWTMiddleware) middlewareImpl(c *gin.Context) {
487483
}
488484

489485
// GetClaimsFromJWT get claims from JWT token
490-
func (mw *GinJWTMiddleware) GetClaimsFromJWT(c *gin.Context) (MapClaims, error) {
486+
func (mw *GinJWTMiddleware) GetClaimsFromJWT(c *gin.Context) (jwt.MapClaims, error) {
491487
token, err := mw.ParseToken(c)
492488
if err != nil {
493489
return nil, err
@@ -499,7 +495,7 @@ func (mw *GinJWTMiddleware) GetClaimsFromJWT(c *gin.Context) (MapClaims, error)
499495
}
500496
}
501497

502-
claims := MapClaims{}
498+
claims := jwt.MapClaims{}
503499
for key, value := range token.Claims.(jwt.MapClaims) {
504500
claims[key] = value
505501
}
@@ -801,22 +797,22 @@ func (mw *GinJWTMiddleware) unauthorized(c *gin.Context, code int, message strin
801797
}
802798

803799
// ExtractClaims help to extract the JWT claims
804-
func ExtractClaims(c *gin.Context) MapClaims {
800+
func ExtractClaims(c *gin.Context) jwt.MapClaims {
805801
claims, exists := c.Get("JWT_PAYLOAD")
806802
if !exists {
807-
return make(MapClaims)
803+
return make(jwt.MapClaims)
808804
}
809805

810-
return claims.(MapClaims)
806+
return claims.(jwt.MapClaims)
811807
}
812808

813809
// ExtractClaimsFromToken help to extract the JWT claims from token
814-
func ExtractClaimsFromToken(token *jwt.Token) MapClaims {
810+
func ExtractClaimsFromToken(token *jwt.Token) jwt.MapClaims {
815811
if token == nil {
816-
return make(MapClaims)
812+
return make(jwt.MapClaims)
817813
}
818814

819-
claims := MapClaims{}
815+
claims := jwt.MapClaims{}
820816
for key, value := range token.Claims.(jwt.MapClaims) {
821817
claims[key] = value
822818
}

auth_jwt_test.go

+17-17
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,9 @@ func TestLoginHandler(t *testing.T) {
235235
authMiddleware, err := New(&GinJWTMiddleware{
236236
Realm: "test zone",
237237
Key: key,
238-
PayloadFunc: func(data interface{}) MapClaims {
238+
PayloadFunc: func(data interface{}) jwt.MapClaims {
239239
// Set custom claim, to be checked in Authorizator method
240-
return MapClaims{"testkey": "testval", "exp": 0}
240+
return jwt.MapClaims{"testkey": "testval", "exp": 0}
241241
},
242242
Authenticator: func(c *gin.Context) (interface{}, error) {
243243
var loginVals Login
@@ -699,13 +699,13 @@ func TestClaimsDuringAuthorization(t *testing.T) {
699699
Key: key,
700700
Timeout: time.Hour,
701701
MaxRefresh: time.Hour * 24,
702-
PayloadFunc: func(data interface{}) MapClaims {
703-
if v, ok := data.(MapClaims); ok {
702+
PayloadFunc: func(data interface{}) jwt.MapClaims {
703+
if v, ok := data.(jwt.MapClaims); ok {
704704
return v
705705
}
706706

707707
if reflect.TypeOf(data).String() != "string" {
708-
return MapClaims{}
708+
return jwt.MapClaims{}
709709
}
710710

711711
var testkey string
@@ -718,7 +718,7 @@ func TestClaimsDuringAuthorization(t *testing.T) {
718718
testkey = ""
719719
}
720720
// Set custom claim, to be checked in Authorizator method
721-
return MapClaims{"identity": data.(string), "testkey": testkey, "exp": 0}
721+
return jwt.MapClaims{"identity": data.(string), "testkey": testkey, "exp": 0}
722722
},
723723
Authenticator: func(c *gin.Context) (interface{}, error) {
724724
var loginVals Login
@@ -762,7 +762,7 @@ func TestClaimsDuringAuthorization(t *testing.T) {
762762
r := gofight.New()
763763
handler := ginHandler(authMiddleware)
764764

765-
userToken, _, _ := authMiddleware.TokenGenerator(MapClaims{
765+
userToken, _, _ := authMiddleware.TokenGenerator(jwt.MapClaims{
766766
"identity": "administrator",
767767
})
768768

@@ -813,12 +813,12 @@ func TestClaimsDuringAuthorization(t *testing.T) {
813813
})
814814
}
815815

816-
func ConvertClaims(claims MapClaims) map[string]interface{} {
816+
func ConvertClaims(claims jwt.MapClaims) map[string]interface{} {
817817
return map[string]interface{}{}
818818
}
819819

820820
func TestEmptyClaims(t *testing.T) {
821-
var jwtClaims MapClaims
821+
var jwtClaims jwt.MapClaims
822822

823823
// the middleware to test
824824
authMiddleware, _ := New(&GinJWTMiddleware{
@@ -905,7 +905,7 @@ func TestTokenExpire(t *testing.T) {
905905

906906
r := gofight.New()
907907

908-
userToken, _, _ := authMiddleware.TokenGenerator(MapClaims{
908+
userToken, _, _ := authMiddleware.TokenGenerator(jwt.MapClaims{
909909
"identity": "admin",
910910
})
911911

@@ -935,7 +935,7 @@ func TestTokenFromQueryString(t *testing.T) {
935935

936936
r := gofight.New()
937937

938-
userToken, _, _ := authMiddleware.TokenGenerator(MapClaims{
938+
userToken, _, _ := authMiddleware.TokenGenerator(jwt.MapClaims{
939939
"identity": "admin",
940940
})
941941

@@ -973,7 +973,7 @@ func TestTokenFromParamPath(t *testing.T) {
973973

974974
r := gofight.New()
975975

976-
userToken, _, _ := authMiddleware.TokenGenerator(MapClaims{
976+
userToken, _, _ := authMiddleware.TokenGenerator(jwt.MapClaims{
977977
"identity": "admin",
978978
})
979979

@@ -1008,7 +1008,7 @@ func TestTokenFromCookieString(t *testing.T) {
10081008

10091009
r := gofight.New()
10101010

1011-
userToken, _, _ := authMiddleware.TokenGenerator(MapClaims{
1011+
userToken, _, _ := authMiddleware.TokenGenerator(jwt.MapClaims{
10121012
"identity": "admin",
10131013
})
10141014

@@ -1253,8 +1253,8 @@ func TestCheckTokenString(t *testing.T) {
12531253
Unauthorized: func(c *gin.Context, code int, message string) {
12541254
c.String(code, message)
12551255
},
1256-
PayloadFunc: func(data interface{}) MapClaims {
1257-
if v, ok := data.(MapClaims); ok {
1256+
PayloadFunc: func(data interface{}) jwt.MapClaims {
1257+
if v, ok := data.(jwt.MapClaims); ok {
12581258
return v
12591259
}
12601260

@@ -1266,7 +1266,7 @@ func TestCheckTokenString(t *testing.T) {
12661266

12671267
r := gofight.New()
12681268

1269-
userToken, _, _ := authMiddleware.TokenGenerator(MapClaims{
1269+
userToken, _, _ := authMiddleware.TokenGenerator(jwt.MapClaims{
12701270
"identity": "admin",
12711271
})
12721272

@@ -1295,7 +1295,7 @@ func TestCheckTokenString(t *testing.T) {
12951295

12961296
_, err = authMiddleware.ParseTokenString(userToken)
12971297
assert.Error(t, err)
1298-
assert.Equal(t, MapClaims{}, ExtractClaimsFromToken(nil))
1298+
assert.Equal(t, jwt.MapClaims{}, ExtractClaimsFromToken(nil))
12991299
}
13001300

13011301
func TestLogout(t *testing.T) {

0 commit comments

Comments
 (0)