Browse Source

user update fix

Abhishek Kondur 2 years ago
parent
commit
8136d03e0a
3 changed files with 3 additions and 5 deletions
  1. 1 1
      controllers/node.go
  2. 1 1
      controllers/user.go
  3. 1 3
      logic/auth.go

+ 1 - 1
controllers/node.go

@@ -198,7 +198,7 @@ func Authorize(hostAllowed, networkCheck bool, authNetwork string, next http.Han
 			var nodeID = ""
 			var nodeID = ""
 			username, issuperadmin, isadmin, errN := logic.VerifyUserToken(authToken)
 			username, issuperadmin, isadmin, errN := logic.VerifyUserToken(authToken)
 			if errN != nil {
 			if errN != nil {
-				logic.ReturnErrorResponse(w, r, errorResponse)
+				logic.ReturnErrorResponse(w, r, logic.FormatError(errN, logic.Unauthorized_Msg))
 				return
 				return
 			}
 			}
 
 

+ 1 - 1
controllers/user.go

@@ -617,7 +617,7 @@ func updateUser(w http.ResponseWriter, r *http.Request) {
 				return
 				return
 			}
 			}
 		}
 		}
-		if caller.IsAdmin && userchange.IsAdmin {
+		if !selfUpdate && caller.IsAdmin && userchange.IsAdmin {
 			slog.Error("admin user cannot update another admin", "caller", caller.UserName, "attempted to update admin user", username)
 			slog.Error("admin user cannot update another admin", "caller", caller.UserName, "attempted to update admin user", username)
 			logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("admin user cannot update another admin"), "forbidden"))
 			logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("admin user cannot update another admin"), "forbidden"))
 			return
 			return

+ 1 - 3
logic/auth.go

@@ -164,15 +164,13 @@ func UpdateUser(userchange, user *models.User) (*models.User, error) {
 	}
 	}
 
 
 	queryUser := user.UserName
 	queryUser := user.UserName
-
-	if userchange.UserName != "" {
+	if userchange.UserName != "" && user.UserName != userchange.UserName {
 		// check if username is available
 		// check if username is available
 		if _, err := GetUser(userchange.UserName); err == nil {
 		if _, err := GetUser(userchange.UserName); err == nil {
 			return &models.User{}, errors.New("username exists already")
 			return &models.User{}, errors.New("username exists already")
 		}
 		}
 		user.UserName = userchange.UserName
 		user.UserName = userchange.UserName
 	}
 	}
-
 	if userchange.Password != "" {
 	if userchange.Password != "" {
 		// encrypt that password so we never see it again
 		// encrypt that password so we never see it again
 		hash, err := bcrypt.GenerateFromPassword([]byte(userchange.Password), 5)
 		hash, err := bcrypt.GenerateFromPassword([]byte(userchange.Password), 5)