FIX: Flair icon being removed when updating other profile info

The commit: 75069ff179

allows users to remove their primary group, but this introduced a bug
where if you were to edit any other profile info like location or
website which is a form on a separate page then the flair dropdown,
would cause the selected flair to be removed.

This fix ensures that if the `primary_group_id` parameter is missing
from the update payload it does not remove the existing
`primary_group_id`. It will only remove the `primary_group_id` if it is
present in the payload and empty.
This commit is contained in:
Blake Erickson 2020-02-07 16:26:33 -07:00
parent a2bd0c6ef9
commit bd49d4af1a
2 changed files with 11 additions and 0 deletions

View File

@ -90,6 +90,7 @@ class UserUpdater
user.primary_group_id = attributes[:primary_group_id]
elsif SiteSetting.user_selected_primary_groups &&
attributes[:primary_group_id] &&
attributes[:primary_group_id].blank?
user.primary_group_id = nil

View File

@ -273,6 +273,16 @@ describe UserUpdater do
expect(user.primary_group_id).to eq nil
end
it 'does not update when changing other profile data' do
SiteSetting.user_selected_primary_groups = true
user.groups << new_group
user.update(primary_group_id: new_group.id)
UserUpdater.new(acting_user, user).update(website: 'http://example.com')
user.reload
expect(user.primary_group_id).to eq new_group.id
end
it 'can be removed by the user when setting is enabled' do
SiteSetting.user_selected_primary_groups = true
user.groups << new_group