From b2ed65788e71cb3200e305cdb1e59347d63d8f8e Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Thu, 24 Nov 2016 12:08:52 +0100 Subject: [PATCH] Get Name from Claims --- login.go | 21 +++++++++++---------- main.go | 12 ++++++++---- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/login.go b/login.go index 354b0af..13dc2f2 100644 --- a/login.go +++ b/login.go @@ -15,10 +15,10 @@ const ( authCookie = "authentication" ) -func verifyLogin(c *gin.Context) bool { +func verifyLogin(c *gin.Context) (jwt.MapClaims, bool) { tokenString, err := c.Cookie(authCookie) if err != nil { - return false + return nil, false } token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { @@ -28,29 +28,30 @@ func verifyLogin(c *gin.Context) bool { return []byte(secret), nil }) - if !verifyToken(c, token, err) { + claims, ok := verifyToken(c, token, err) + if !ok { c.SetCookie(authCookie, "", -1, "", "", false, false) - return false + return nil, false } - return true + return claims, true } -func verifyToken(c *gin.Context, token *jwt.Token, err error) bool { +func verifyToken(c *gin.Context, token *jwt.Token, err error) (jwt.MapClaims, bool) { if err != nil { - return false + return nil, false } claims, ok := token.Claims.(jwt.MapClaims) if !ok || !token.Valid { - return false + return nil, false } if !claims.VerifyExpiresAt(time.Now().Unix(), true) { - return false + return nil, false } - return true + return claims, true } func loginSuccess(c *gin.Context, username string, name string) { diff --git a/main.go b/main.go index 113a380..2b486b4 100644 --- a/main.go +++ b/main.go @@ -43,14 +43,18 @@ func main() { } func restricted(c *gin.Context) { - //user, _ := c.Get("user") //.(*jwt.Token) - //name := user.Claims["name"].(string) - name := "jan" + claims, ok := verifyLogin(c) + if !ok { + c.Redirect(http.StatusTemporaryRedirect, "/login.html") + return + } + + name := claims["name"].(string) c.String(http.StatusOK, "Welcome "+name+"!") } func login(c *gin.Context) { - if verifyLogin(c) { + if _, ok := verifyLogin(c); ok { c.Redirect(http.StatusTemporaryRedirect, "/api/v1/hello") return }