Skip to content

Commit f92d339

Browse files
committed
Fixed external user syncing when local user management is disabled
This fixes external user syncing when local user management is disabled. Fixes: eca3563 Author-Change-Id: IB#1105051
1 parent eca3563 commit f92d339

File tree

11 files changed

+31
-29
lines changed

11 files changed

+31
-29
lines changed

cmd/admin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ func runChangePassword(c *cli.Context) error {
283283
}
284284
user.HashPassword(c.String("password"))
285285

286-
if err := models.UpdateUserCols(user, "passwd", "salt"); err != nil {
286+
if err := models.UpdateUserCols(user, false, "passwd", "salt"); err != nil {
287287
return err
288288
}
289289

models/login_source.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ func LoginViaLDAP(user *User, login, password string, source *LoginSource) (*Use
488488
cols = append(cols, "is_restricted")
489489
}
490490
if len(cols) > 0 {
491-
err = UpdateUserCols(user, cols...)
491+
err = UpdateUserCols(user, false, cols...)
492492
if err != nil {
493493
return nil, err
494494
}
@@ -768,7 +768,7 @@ func UserSignIn(username, password string) (*User, error) {
768768
// Update password hash if server password hash algorithm have changed
769769
if user.PasswdHashAlgo != setting.PasswordHashAlgo {
770770
user.HashPassword(password)
771-
if err := UpdateUserCols(user, "passwd", "passwd_hash_algo"); err != nil {
771+
if err := UpdateUserCols(user, false, "passwd", "passwd_hash_algo"); err != nil {
772772
return nil, err
773773
}
774774
}

models/repo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,7 @@ func CreateRepository(ctx DBContext, doer, u *User, repo *Repository, overwriteO
11901190

11911191
// Remember visibility preference.
11921192
u.LastRepoVisibility = repo.IsPrivate
1193-
if err = updateUserCols(ctx.e, u, "last_repo_visibility"); err != nil {
1193+
if err = updateUserCols(ctx.e, u, false, "last_repo_visibility"); err != nil {
11941194
return fmt.Errorf("updateUser: %v", err)
11951195
}
11961196

models/user.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,13 @@ func (u *User) SetLastLogin() {
220220
// UpdateDiffViewStyle updates the users diff view style
221221
func (u *User) UpdateDiffViewStyle(style string) error {
222222
u.DiffViewStyle = style
223-
return UpdateUserCols(u, "diff_view_style")
223+
return UpdateUserCols(u, false, "diff_view_style")
224224
}
225225

226226
// UpdateTheme updates a users' theme irrespective of the site wide theme
227227
func (u *User) UpdateTheme(themeName string) error {
228228
u.Theme = themeName
229-
return UpdateUserCols(u, "theme")
229+
return UpdateUserCols(u, false, "theme")
230230
}
231231

232232
// GetEmail returns an noreply email, if the user has set to keep his
@@ -824,7 +824,7 @@ func (u *User) EmailNotifications() string {
824824
// SetEmailNotifications sets the user's email notification preference
825825
func (u *User) SetEmailNotifications(set string) error {
826826
u.EmailNotificationsPreference = set
827-
if err := UpdateUserCols(u, "email_notifications_preference"); err != nil {
827+
if err := UpdateUserCols(u, false, "email_notifications_preference"); err != nil {
828828
log.Error("SetEmailNotifications: %v", err)
829829
return err
830830
}
@@ -1173,13 +1173,15 @@ func UpdateUser(u *User) error {
11731173
}
11741174

11751175
// UpdateUserCols update user according special columns
1176-
func UpdateUserCols(u *User, cols ...string) error {
1177-
return updateUserCols(x, u, cols...)
1176+
func UpdateUserCols(u *User, force bool, cols ...string) error {
1177+
return updateUserCols(x, u, force, cols...)
11781178
}
11791179

1180-
func updateUserCols(e Engine, u *User, cols ...string) error {
1181-
if err := updateUserAllowed(u); err != nil {
1182-
return err
1180+
func updateUserCols(e Engine, u *User, force bool, cols ...string) error {
1181+
if !force {
1182+
if err := updateUserAllowed(u); err != nil {
1183+
return err
1184+
}
11831185
}
11841186
_, err := e.ID(u.ID).Cols(cols...).Update(u)
11851187
return err
@@ -2021,7 +2023,7 @@ func SyncExternalUsers(ctx context.Context, updateExisting bool) error {
20212023
}
20222024
usr.IsActive = true
20232025

2024-
err = UpdateUserCols(usr, "full_name", "email", "is_admin", "is_restricted", "is_active")
2026+
err = UpdateUserCols(usr, true, "full_name", "email", "is_admin", "is_restricted", "is_active")
20252027
if err != nil {
20262028
log.Error("SyncExternalUsers[%s]: Error updating user %s: %v", s.Name, usr.Name, err)
20272029
}
@@ -2058,7 +2060,7 @@ func SyncExternalUsers(ctx context.Context, updateExisting bool) error {
20582060
log.Trace("SyncExternalUsers[%s]: Deactivating user %s", s.Name, usr.Name)
20592061

20602062
usr.IsActive = false
2061-
err = UpdateUserCols(usr, "is_active")
2063+
err = UpdateUserCols(usr, true, "is_active")
20622064
if err != nil {
20632065
log.Error("SyncExternalUsers[%s]: Error deactivating user %s: %v", s.Name, usr.Name, err)
20642066
}

models/user_mail.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ func (email *EmailAddress) updateActivation(e Engine, activate bool) error {
201201
if _, err := e.ID(email.ID).Cols("is_activated").Update(email); err != nil {
202202
return err
203203
}
204-
return updateUserCols(e, user, "rands")
204+
return updateUserCols(e, user, false, "rands")
205205
}
206206

207207
// DeleteEmailAddress deletes an email address of given user.
@@ -448,7 +448,7 @@ func ActivateUserEmail(userID int64, email string, primary, activate bool) (err
448448
if user.Rands, err = GetUserSalt(); err != nil {
449449
return fmt.Errorf("generate salt: %v", err)
450450
}
451-
if err = updateUserCols(sess, &user, "is_active", "rands"); err != nil {
451+
if err = updateUserCols(sess, &user, false, "is_active", "rands"); err != nil {
452452
return fmt.Errorf("updateUserCols(): %v", err)
453453
}
454454
} else {

modules/auth/sso/sso.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func handleSignIn(ctx *macaron.Context, sess session.Store, user *models.User) {
133133
// If the user does not have a locale set, we save the current one.
134134
if len(user.Language) == 0 {
135135
user.Language = ctx.Locale.Language()
136-
if err := models.UpdateUserCols(user, "language"); err != nil {
136+
if err := models.UpdateUserCols(user, false, "language"); err != nil {
137137
log.Error(fmt.Sprintf("Error updating user language [user: %d, locale: %s]", user.ID, user.Language))
138138
return
139139
}

routers/api/v1/org/org.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ func Edit(ctx *context.APIContext, form api.EditOrgOption) {
253253
if form.Visibility != "" {
254254
org.Visibility = api.VisibilityModes[form.Visibility]
255255
}
256-
if err := models.UpdateUserCols(org, "full_name", "description", "website", "location", "visibility"); err != nil {
256+
if err := models.UpdateUserCols(org, false, "full_name", "description", "website", "location", "visibility"); err != nil {
257257
ctx.Error(http.StatusInternalServerError, "EditOrganization", err)
258258
return
259259
}

routers/user/auth.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR
519519
// If the user does not have a locale set, we save the current one.
520520
if len(u.Language) == 0 {
521521
u.Language = ctx.Locale.Language()
522-
if err := models.UpdateUserCols(u, "language"); err != nil {
522+
if err := models.UpdateUserCols(u, false, "language"); err != nil {
523523
log.Error(fmt.Sprintf("Error updating user language [user: %d, locale: %s]", u.ID, u.Language))
524524
return setting.AppSubURL + "/"
525525
}
@@ -532,7 +532,7 @@ func handleSignInFull(ctx *context.Context, u *models.User, remember bool, obeyR
532532

533533
// Register last login
534534
u.SetLastLogin()
535-
if err := models.UpdateUserCols(u, "last_login_unix"); err != nil {
535+
if err := models.UpdateUserCols(u, false, "last_login_unix"); err != nil {
536536
ctx.ServerError("UpdateUserCols", err)
537537
return setting.AppSubURL + "/"
538538
}
@@ -639,7 +639,7 @@ func handleOAuth2SignIn(u *models.User, gothUser goth.User, ctx *context.Context
639639

640640
// Register last login
641641
u.SetLastLogin()
642-
if err := models.UpdateUserCols(u, "last_login_unix"); err != nil {
642+
if err := models.UpdateUserCols(u, false, "last_login_unix"); err != nil {
643643
ctx.ServerError("UpdateUserCols", err)
644644
return
645645
}
@@ -978,7 +978,7 @@ func LinkAccountPostRegister(ctx *context.Context, cpt *captcha.Captcha, form au
978978
u.IsAdmin = true
979979
u.IsActive = true
980980
u.SetLastLogin()
981-
if err := models.UpdateUserCols(u, "is_admin", "is_active", "last_login_unix"); err != nil {
981+
if err := models.UpdateUserCols(u, false, "is_admin", "is_active", "last_login_unix"); err != nil {
982982
ctx.ServerError("UpdateUser", err)
983983
return
984984
}
@@ -1154,7 +1154,7 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo
11541154
u.IsAdmin = true
11551155
u.IsActive = true
11561156
u.SetLastLogin()
1157-
if err := models.UpdateUserCols(u, "is_admin", "is_active", "last_login_unix"); err != nil {
1157+
if err := models.UpdateUserCols(u, false, "is_admin", "is_active", "last_login_unix"); err != nil {
11581158
ctx.ServerError("UpdateUser", err)
11591159
return
11601160
}
@@ -1215,7 +1215,7 @@ func Activate(ctx *context.Context) {
12151215
ctx.ServerError("UpdateUser", err)
12161216
return
12171217
}
1218-
if err := models.UpdateUserCols(user, "is_active", "rands"); err != nil {
1218+
if err := models.UpdateUserCols(user, false, "is_active", "rands"); err != nil {
12191219
if models.IsErrUserNotExist(err) {
12201220
ctx.Error(404)
12211221
} else {
@@ -1475,7 +1475,7 @@ func ResetPasswdPost(ctx *context.Context) {
14751475
}
14761476
u.HashPassword(passwd)
14771477
u.MustChangePassword = false
1478-
if err := models.UpdateUserCols(u, "must_change_password", "passwd", "rands", "salt"); err != nil {
1478+
if err := models.UpdateUserCols(u, false, "must_change_password", "passwd", "rands", "salt"); err != nil {
14791479
ctx.ServerError("UpdateUser", err)
14801480
return
14811481
}
@@ -1551,7 +1551,7 @@ func MustChangePasswordPost(ctx *context.Context, cpt *captcha.Captcha, form aut
15511551
u.HashPassword(form.Password)
15521552
u.MustChangePassword = false
15531553

1554-
if err := models.UpdateUserCols(u, "must_change_password", "passwd", "salt"); err != nil {
1554+
if err := models.UpdateUserCols(u, false, "must_change_password", "passwd", "salt"); err != nil {
15551555
ctx.ServerError("UpdateUser", err)
15561556
return
15571557
}

routers/user/auth_openid.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ func RegisterOpenIDPost(ctx *context.Context, cpt *captcha.Captcha, form auth.Si
443443
u.IsAdmin = true
444444
u.IsActive = true
445445
u.SetLastLogin()
446-
if err := models.UpdateUserCols(u, "is_admin", "is_active", "last_login_unix"); err != nil {
446+
if err := models.UpdateUserCols(u, false, "is_admin", "is_active", "last_login_unix"); err != nil {
447447
ctx.ServerError("UpdateUser", err)
448448
return
449449
}

routers/user/setting/account.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func AccountPost(ctx *context.Context, form auth.ChangePasswordForm) {
7171
return
7272
}
7373
ctx.User.HashPassword(form.Password)
74-
if err := models.UpdateUserCols(ctx.User, "salt", "passwd"); err != nil {
74+
if err := models.UpdateUserCols(ctx.User, false, "salt", "passwd"); err != nil {
7575
ctx.ServerError("UpdateUser", err)
7676
return
7777
}

routers/user/setting/profile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func UpdateAvatarSetting(ctx *context.Context, form auth.AvatarForm, ctxUser *mo
160160
}
161161
}
162162

163-
if err := models.UpdateUserCols(ctxUser, "avatar", "avatar_email", "use_custom_avatar"); err != nil {
163+
if err := models.UpdateUserCols(ctxUser, false, "avatar", "avatar_email", "use_custom_avatar"); err != nil {
164164
return fmt.Errorf("UpdateUser: %v", err)
165165
}
166166

0 commit comments

Comments
 (0)