From aa9ea135648097b227b37e66c4644ee07cd433f2 Mon Sep 17 00:00:00 2001 From: abhishek9686 Date: Sun, 23 Jun 2024 16:26:27 +0530 Subject: [PATCH] add new func to get username from jwt --- logic/jwts.go | 26 ++++++++++++++++++++++++++ logic/security.go | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/logic/jwts.go b/logic/jwts.go index a2b95049..39a99afe 100644 --- a/logic/jwts.go +++ b/logic/jwts.go @@ -87,6 +87,32 @@ func VerifyJWT(bearerToken string) (username string, issuperadmin, isadmin bool, return VerifyUserToken(token) } +func GetUserNameFromToken(tokenString string) (username string, err error) { + claims := &models.UserClaims{} + + if tokenString == servercfg.GetMasterKey() && servercfg.GetMasterKey() != "" { + return MasterUser, nil + } + + token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) { + return jwtSecretKey, nil + }) + + if token != nil && token.Valid { + var user *models.User + // check that user exists + user, err = GetUser(claims.UserName) + if err != nil { + return "", err + } + if user.UserName != "" { + return user.UserName, nil + } + err = errors.New("user does not exist") + } + return "", err +} + // VerifyUserToken func will used to Verify the JWT Token while using APIS func VerifyUserToken(tokenString string) (username string, issuperadmin, isadmin bool, err error) { claims := &models.UserClaims{} diff --git a/logic/security.go b/logic/security.go index 8a3c727a..cba95721 100644 --- a/logic/security.go +++ b/logic/security.go @@ -133,7 +133,7 @@ func SecurityCheck(reqAdmin bool, next http.Handler) http.HandlerFunc { r.Header.Set("ismaster", "no") bearerToken := r.Header.Get("Authorization") isGlobalAccesss := r.Header.Get("IS_GLOBAL_ACCESS") == "yes" - username, err := UserPermissions(reqAdmin, bearerToken) + username, err := GetUserNameFromToken(bearerToken) if err != nil { ReturnErrorResponse(w, r, FormatError(err, err.Error())) return