Add tokenkey to the gin context

This commit is contained in:
Jannis Mattheis 2018-01-30 21:33:45 +01:00 committed by Jannis Mattheis
parent 8dfb5c7a69
commit 8e8705c6e5
3 changed files with 18 additions and 5 deletions

View File

@ -104,7 +104,7 @@ func (a *Auth) requireToken(auth authenticate) gin.HandlerFunc {
if user != nil || token != "" { if user != nil || token != "" {
if ok, userID := auth(token, user); ok { if ok, userID := auth(token, user); ok {
RegisterAuthentication(ctx, user, userID) RegisterAuthentication(ctx, user, userID, token)
ctx.Next() ctx.Next()
return return
} }

View File

@ -5,10 +5,11 @@ import (
"github.com/jmattheis/memo/model" "github.com/jmattheis/memo/model"
) )
// RegisterAuthentication registers the user or the user id; The id can later be obtained by GetUserID. // RegisterAuthentication registers the user id, user and or token.
func RegisterAuthentication(ctx *gin.Context, user *model.User, userID uint) { func RegisterAuthentication(ctx *gin.Context, user *model.User, userID uint, tokenID string) {
ctx.Set("user", user) ctx.Set("user", user)
ctx.Set("userid", userID) ctx.Set("userid", userID)
ctx.Set("tokenid", tokenID)
} }
// GetUserID returns the user id which was previously registered by RegisterAuthentication. // GetUserID returns the user id which was previously registered by RegisterAuthentication.
@ -24,3 +25,8 @@ func GetUserID(ctx *gin.Context) uint {
return user.ID return user.ID
} }
// GetTokenID returns the tokenID
func GetTokenID(ctx *gin.Context) string {
return ctx.MustGet("tokenid").(string)
}

View File

@ -29,9 +29,16 @@ func (s *UtilSuite) Test_getID() {
}) })
} }
func (s *UtilSuite) expectUserIDWith(user *model.User, tokenID uint, expectedID uint) { func (s *UtilSuite) Test_getToken() {
ctx, _ := gin.CreateTestContext(httptest.NewRecorder()) ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
RegisterAuthentication(ctx, user, tokenID) RegisterAuthentication(ctx, nil, 1, "asdasda")
actualID := GetTokenID(ctx)
assert.Equal(s.T(), "asdasda", actualID)
}
func (s *UtilSuite) expectUserIDWith(user *model.User, tokenUserID uint, expectedID uint) {
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
RegisterAuthentication(ctx, user, tokenUserID, "")
actualID := GetUserID(ctx) actualID := GetUserID(ctx)
assert.Equal(s.T(), expectedID, actualID) assert.Equal(s.T(), expectedID, actualID)
} }