diff --git a/pkg/cmd/user.go b/pkg/cmd/user.go index db4aaeb33..7e9f09f83 100644 --- a/pkg/cmd/user.go +++ b/pkg/cmd/user.go @@ -225,7 +225,7 @@ var userUpdateCmd = &cobra.Command{ u.AvatarProvider = userFlagAvatar } - _, err := user.UpdateUser(s, u) + _, err := user.UpdateUser(s, u, false) if err != nil { _ = s.Rollback() log.Fatalf("Error updating the user: %s", err) @@ -299,7 +299,7 @@ var userChangeEnabledCmd = &cobra.Command{ u.Status = user.StatusActive } } - _, err := user.UpdateUser(s, u) + _, err := user.UpdateUser(s, u, false) if err != nil { _ = s.Rollback() log.Fatalf("Could not enable the user") diff --git a/pkg/modules/auth/openid/openid.go b/pkg/modules/auth/openid/openid.go index e8202195e..9509e52ea 100644 --- a/pkg/modules/auth/openid/openid.go +++ b/pkg/modules/auth/openid/openid.go @@ -267,7 +267,7 @@ func getOrCreateUser(s *xorm.Session, cl *claims, issuer, subject string) (u *us Name: u.Name, Issuer: issuer, Subject: subject, - }) + }, false) if err != nil { return nil, err } diff --git a/pkg/routes/api/v1/avatar.go b/pkg/routes/api/v1/avatar.go index 2bf540ed1..8b2ab2e25 100644 --- a/pkg/routes/api/v1/avatar.go +++ b/pkg/routes/api/v1/avatar.go @@ -205,7 +205,7 @@ func UploadAvatar(c echo.Context) (err error) { u.AvatarFileID = f.ID u.AvatarProvider = "upload" - if _, err := user.UpdateUser(s, u); err != nil { + if _, err := user.UpdateUser(s, u, false); err != nil { _ = s.Rollback() return handler.HandleHTTPError(err, c) } diff --git a/pkg/routes/api/v1/user_settings.go b/pkg/routes/api/v1/user_settings.go index 536a427a1..279ce260c 100644 --- a/pkg/routes/api/v1/user_settings.go +++ b/pkg/routes/api/v1/user_settings.go @@ -133,7 +133,7 @@ func ChangeUserAvatarProvider(c echo.Context) error { user.AvatarProvider = uap.AvatarProvider - _, err = user2.UpdateUser(s, user) + _, err = user2.UpdateUser(s, user, false) if err != nil { _ = s.Rollback() return handler.HandleHTTPError(err, c) @@ -199,7 +199,7 @@ func UpdateGeneralUserSettings(c echo.Context) error { user.Timezone = us.Timezone user.OverdueTasksRemindersTime = us.OverdueTasksRemindersTime - _, err = user2.UpdateUser(s, user) + _, err = user2.UpdateUser(s, user, true) if err != nil { _ = s.Rollback() return handler.HandleHTTPError(err, c) diff --git a/pkg/user/user.go b/pkg/user/user.go index 8dd360930..9bad49113 100644 --- a/pkg/user/user.go +++ b/pkg/user/user.go @@ -419,7 +419,7 @@ func GetUserFromClaims(claims jwt.MapClaims) (user *User, err error) { } // UpdateUser updates a user -func UpdateUser(s *xorm.Session, user *User) (updatedUser *User, err error) { +func UpdateUser(s *xorm.Session, user *User, forceOverride bool) (updatedUser *User, err error) { // Check if it exists theUser, err := GetUserWithEmail(s, &User{ID: user.ID}) @@ -442,7 +442,7 @@ func UpdateUser(s *xorm.Session, user *User) (updatedUser *User, err error) { } // Check if we have a name - if user.Name == "" { + if user.Name == "" && !forceOverride { user.Name = theUser.Name } diff --git a/pkg/user/user_test.go b/pkg/user/user_test.go index 8f3a9ac5b..fd0e86503 100644 --- a/pkg/user/user_test.go +++ b/pkg/user/user_test.go @@ -292,7 +292,7 @@ func TestUpdateUser(t *testing.T) { ID: 1, Password: "LoremIpsum", Email: "testing@example.com", - }) + }, false) assert.NoError(t, err) assert.Equal(t, "$2a$14$dcadBoMBL9jQoOcZK8Fju.cy0Ptx2oZECkKLnaa8ekRoTFe1w7To.", uuser.Password) // Password should not change assert.Equal(t, "user1", uuser.Username) // Username should not change either @@ -305,7 +305,7 @@ func TestUpdateUser(t *testing.T) { uuser, err := UpdateUser(s, &User{ ID: 1, Username: "changedname", - }) + }, false) assert.NoError(t, err) assert.Equal(t, "$2a$14$dcadBoMBL9jQoOcZK8Fju.cy0Ptx2oZECkKLnaa8ekRoTFe1w7To.", uuser.Password) // Password should not change assert.Equal(t, "changedname", uuser.Username) @@ -317,7 +317,7 @@ func TestUpdateUser(t *testing.T) { _, err := UpdateUser(s, &User{ ID: 99999, - }) + }, false) assert.Error(t, err) assert.True(t, IsErrUserDoesNotExist(err)) })