Răsfoiți Sursa

user update fix

Abhishek Kondur 2 ani în urmă
părinte
comite
8136d03e0a
3 a modificat fișierele cu 3 adăugiri și 5 ștergeri
  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 = ""
 			username, issuperadmin, isadmin, errN := logic.VerifyUserToken(authToken)
 			if errN != nil {
-				logic.ReturnErrorResponse(w, r, errorResponse)
+				logic.ReturnErrorResponse(w, r, logic.FormatError(errN, logic.Unauthorized_Msg))
 				return
 			}
 

+ 1 - 1
controllers/user.go

@@ -617,7 +617,7 @@ func updateUser(w http.ResponseWriter, r *http.Request) {
 				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)
 			logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("admin user cannot update another admin"), "forbidden"))
 			return

+ 1 - 3
logic/auth.go

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