Przeglądaj źródła

add new func to get username from jwt

abhishek9686 1 rok temu
rodzic
commit
aa9ea13564
2 zmienionych plików z 27 dodań i 1 usunięć
  1. 26 0
      logic/jwts.go
  2. 1 1
      logic/security.go

+ 26 - 0
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{}

+ 1 - 1
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