diff --git a/app/services/user_merger.rb b/app/services/user_merger.rb index d745bc0e7cc..c8e8cc530ec 100644 --- a/app/services/user_merger.rb +++ b/app/services/user_merger.rb @@ -347,7 +347,11 @@ class UserMerger def delete_source_user @source_user.reload - @source_user.update_attribute(:admin, false) + @source_user.update_attributes( + admin: false, + email: "#{@source_user.username}_#{SecureRandom.hex}@no-email.invalid" + ) + UserDestroyer.new(Discourse.system_user).destroy(@source_user) end diff --git a/spec/services/user_merger_spec.rb b/spec/services/user_merger_spec.rb index 2d81ad8e3be..6306291138b 100644 --- a/spec/services/user_merger_spec.rb +++ b/spec/services/user_merger_spec.rb @@ -953,6 +953,15 @@ describe UserMerger do expect(User.find_by_username(source_user.username)).to be_nil end + it "deletes the source user even when it is a member of a group that grants a trust level" do + group = Fabricate(:group, grant_trust_level: 3) + group.bulk_add([source_user.id, target_user.id]) + + merge_users! + + expect(User.find_by_username(source_user.username)).to be_nil + end + it "deletes external auth infos of source user" do FacebookUserInfo.create(user_id: source_user.id, facebook_user_id: "example") GithubUserInfo.create(user_id: source_user.id, screen_name: "example", github_user_id: "examplel123123")