Only update needed columns when update user (#2296)
* only update needed columns when update user * fix missing update_unix column
This commit is contained in:
		
							parent
							
								
									921d90fd8b
								
							
						
					
					
						commit
						f960e19c59
					
				
					 6 changed files with 45 additions and 17 deletions
				
			
		|  | @ -103,7 +103,7 @@ func runChangePassword(c *cli.Context) error { | ||||||
| 		return fmt.Errorf("%v", err) | 		return fmt.Errorf("%v", err) | ||||||
| 	} | 	} | ||||||
| 	user.EncodePasswd() | 	user.EncodePasswd() | ||||||
| 	if err := models.UpdateUser(user); err != nil { | 	if err := models.UpdateUserCols(user, "passwd", "salt"); err != nil { | ||||||
| 		return fmt.Errorf("%v", err) | 		return fmt.Errorf("%v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -157,7 +157,7 @@ func (u *User) SetLastLogin() { | ||||||
| // UpdateDiffViewStyle updates the users diff view style
 | // UpdateDiffViewStyle updates the users diff view style
 | ||||||
| func (u *User) UpdateDiffViewStyle(style string) error { | func (u *User) UpdateDiffViewStyle(style string) error { | ||||||
| 	u.DiffViewStyle = style | 	u.DiffViewStyle = style | ||||||
| 	return UpdateUser(u) | 	return UpdateUserCols(u, "diff_view_style") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // AfterSet is invoked from XORM after setting the value of a field of this object.
 | // AfterSet is invoked from XORM after setting the value of a field of this object.
 | ||||||
|  | @ -860,7 +860,9 @@ func updateUser(e Engine, u *User) error { | ||||||
| 		if len(u.AvatarEmail) == 0 { | 		if len(u.AvatarEmail) == 0 { | ||||||
| 			u.AvatarEmail = u.Email | 			u.AvatarEmail = u.Email | ||||||
| 		} | 		} | ||||||
| 		u.Avatar = base.HashEmail(u.AvatarEmail) | 		if len(u.AvatarEmail) > 0 { | ||||||
|  | 			u.Avatar = base.HashEmail(u.AvatarEmail) | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	u.LowerName = strings.ToLower(u.Name) | 	u.LowerName = strings.ToLower(u.Name) | ||||||
|  | @ -877,6 +879,29 @@ func UpdateUser(u *User) error { | ||||||
| 	return updateUser(x, u) | 	return updateUser(x, u) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // UpdateUserCols update user according special columns
 | ||||||
|  | func UpdateUserCols(u *User, cols ...string) error { | ||||||
|  | 	// Organization does not need email
 | ||||||
|  | 	u.Email = strings.ToLower(u.Email) | ||||||
|  | 	if !u.IsOrganization() { | ||||||
|  | 		if len(u.AvatarEmail) == 0 { | ||||||
|  | 			u.AvatarEmail = u.Email | ||||||
|  | 		} | ||||||
|  | 		if len(u.AvatarEmail) > 0 { | ||||||
|  | 			u.Avatar = base.HashEmail(u.AvatarEmail) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	u.LowerName = strings.ToLower(u.Name) | ||||||
|  | 	u.Location = base.TruncateString(u.Location, 255) | ||||||
|  | 	u.Website = base.TruncateString(u.Website, 255) | ||||||
|  | 	u.Description = base.TruncateString(u.Description, 255) | ||||||
|  | 
 | ||||||
|  | 	cols = append(cols, "updated_unix") | ||||||
|  | 	_, err := x.Id(u.ID).Cols(cols...).Update(u) | ||||||
|  | 	return err | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // UpdateUserSetting updates user's settings.
 | // UpdateUserSetting updates user's settings.
 | ||||||
| func UpdateUserSetting(u *User) error { | func UpdateUserSetting(u *User) error { | ||||||
| 	if !u.IsOrganization() { | 	if !u.IsOrganization() { | ||||||
|  | @ -1418,7 +1443,7 @@ func SyncExternalUsers() { | ||||||
| 						} | 						} | ||||||
| 						usr.IsActive = true | 						usr.IsActive = true | ||||||
| 
 | 
 | ||||||
| 						err = UpdateUser(usr) | 						err = UpdateUserCols(usr, "full_name", "email", "is_admin", "is_active") | ||||||
| 						if err != nil { | 						if err != nil { | ||||||
| 							log.Error(4, "SyncExternalUsers[%s]: Error updating user %s: %v", s.Name, usr.Name, err) | 							log.Error(4, "SyncExternalUsers[%s]: Error updating user %s: %v", s.Name, usr.Name, err) | ||||||
| 						} | 						} | ||||||
|  | @ -1440,7 +1465,7 @@ func SyncExternalUsers() { | ||||||
| 						log.Trace("SyncExternalUsers[%s]: Deactivating user %s", s.Name, usr.Name) | 						log.Trace("SyncExternalUsers[%s]: Deactivating user %s", s.Name, usr.Name) | ||||||
| 
 | 
 | ||||||
| 						usr.IsActive = false | 						usr.IsActive = false | ||||||
| 						err = UpdateUser(&usr) | 						err = UpdateUserCols(&usr, "is_active") | ||||||
| 						if err != nil { | 						if err != nil { | ||||||
| 							log.Error(4, "SyncExternalUsers[%s]: Error deactivating user %s: %v", s.Name, usr.Name, err) | 							log.Error(4, "SyncExternalUsers[%s]: Error deactivating user %s: %v", s.Name, usr.Name, err) | ||||||
| 						} | 						} | ||||||
|  |  | ||||||
|  | @ -56,7 +56,7 @@ func Edit(ctx *context.APIContext, form api.EditOrgOption) { | ||||||
| 	org.Description = form.Description | 	org.Description = form.Description | ||||||
| 	org.Website = form.Website | 	org.Website = form.Website | ||||||
| 	org.Location = form.Location | 	org.Location = form.Location | ||||||
| 	if err := models.UpdateUser(org); err != nil { | 	if err := models.UpdateUserCols(org, "full_name", "description", "website", "location"); err != nil { | ||||||
| 		ctx.Error(500, "UpdateUser", err) | 		ctx.Error(500, "UpdateUser", err) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -340,8 +340,8 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR | ||||||
| 
 | 
 | ||||||
| 	// Register last login
 | 	// Register last login
 | ||||||
| 	u.SetLastLogin() | 	u.SetLastLogin() | ||||||
| 	if err := models.UpdateUser(u); err != nil { | 	if err := models.UpdateUserCols(u, "last_login_unix"); err != nil { | ||||||
| 		ctx.Handle(500, "UpdateUser", err) | 		ctx.Handle(500, "UpdateUserCols", err) | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -430,8 +430,8 @@ func handleOAuth2SignIn(u *models.User, gothUser goth.User, ctx *context.Context | ||||||
| 
 | 
 | ||||||
| 			// Register last login
 | 			// Register last login
 | ||||||
| 			u.SetLastLogin() | 			u.SetLastLogin() | ||||||
| 			if err := models.UpdateUser(u); err != nil { | 			if err := models.UpdateUserCols(u, "last_login_unix"); err != nil { | ||||||
| 				ctx.Handle(500, "UpdateUser", err) | 				ctx.Handle(500, "UpdateUserCols", err) | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | @ -666,7 +666,8 @@ func LinkAccountPostRegister(ctx *context.Context, cpt *captcha.Captcha, form au | ||||||
| 	if models.CountUsers() == 1 { | 	if models.CountUsers() == 1 { | ||||||
| 		u.IsAdmin = true | 		u.IsAdmin = true | ||||||
| 		u.IsActive = true | 		u.IsActive = true | ||||||
| 		if err := models.UpdateUser(u); err != nil { | 		u.SetLastLogin() | ||||||
|  | 		if err := models.UpdateUserCols(u, "is_admin", "is_active", "last_login_unix"); err != nil { | ||||||
| 			ctx.Handle(500, "UpdateUser", err) | 			ctx.Handle(500, "UpdateUser", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  | @ -781,7 +782,8 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo | ||||||
| 	if models.CountUsers() == 1 { | 	if models.CountUsers() == 1 { | ||||||
| 		u.IsAdmin = true | 		u.IsAdmin = true | ||||||
| 		u.IsActive = true | 		u.IsActive = true | ||||||
| 		if err := models.UpdateUser(u); err != nil { | 		u.SetLastLogin() | ||||||
|  | 		if err := models.UpdateUserCols(u, "is_admin", "is_active", "last_login_unix"); err != nil { | ||||||
| 			ctx.Handle(500, "UpdateUser", err) | 			ctx.Handle(500, "UpdateUser", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  | @ -840,7 +842,7 @@ func Activate(ctx *context.Context) { | ||||||
| 			ctx.Handle(500, "UpdateUser", err) | 			ctx.Handle(500, "UpdateUser", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		if err := models.UpdateUser(user); err != nil { | 		if err := models.UpdateUserCols(user, "is_active", "rands"); err != nil { | ||||||
| 			if models.IsErrUserNotExist(err) { | 			if models.IsErrUserNotExist(err) { | ||||||
| 				ctx.Error(404) | 				ctx.Error(404) | ||||||
| 			} else { | 			} else { | ||||||
|  | @ -991,7 +993,7 @@ func ResetPasswdPost(ctx *context.Context) { | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		u.EncodePasswd() | 		u.EncodePasswd() | ||||||
| 		if err := models.UpdateUser(u); err != nil { | 		if err := models.UpdateUserCols(u, "passwd", "rands", "salt"); err != nil { | ||||||
| 			ctx.Handle(500, "UpdateUser", err) | 			ctx.Handle(500, "UpdateUser", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -404,7 +404,8 @@ func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.Si | ||||||
| 	if models.CountUsers() == 1 { | 	if models.CountUsers() == 1 { | ||||||
| 		u.IsAdmin = true | 		u.IsAdmin = true | ||||||
| 		u.IsActive = true | 		u.IsActive = true | ||||||
| 		if err := models.UpdateUser(u); err != nil { | 		u.SetLastLogin() | ||||||
|  | 		if err := models.UpdateUserCols(u, "is_admin", "is_active", "last_login_unix"); err != nil { | ||||||
| 			ctx.Handle(500, "UpdateUser", err) | 			ctx.Handle(500, "UpdateUser", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -156,7 +156,7 @@ func UpdateAvatarSetting(ctx *context.Context, form auth.AvatarForm, ctxUser *mo | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err := models.UpdateUser(ctxUser); err != nil { | 	if err := models.UpdateUserCols(ctxUser, "avatar", "avatar_email", "use_custom_avatar"); err != nil { | ||||||
| 		return fmt.Errorf("UpdateUser: %v", err) | 		return fmt.Errorf("UpdateUser: %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -221,7 +221,7 @@ func SettingsPasswordPost(ctx *context.Context, form auth.ChangePasswordForm) { | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		ctx.User.EncodePasswd() | 		ctx.User.EncodePasswd() | ||||||
| 		if err := models.UpdateUser(ctx.User); err != nil { | 		if err := models.UpdateUserCols(ctx.User, "salt", "passwd"); err != nil { | ||||||
| 			ctx.Handle(500, "UpdateUser", err) | 			ctx.Handle(500, "UpdateUser", err) | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue