FEATURE: Log user merge in staff logs

This commit is contained in:
Gerhard Schlager
2018-06-11 18:43:56 +02:00
parent bfa0f71e2b
commit 150ae21489
6 changed files with 38 additions and 4 deletions
+10
View File
@@ -242,6 +242,16 @@ class StaffActionLogger
))
end
def log_user_merge(user, source_username, source_email, opts = {})
raise Discourse::InvalidParameters.new(:user) unless user
UserHistory.create!(params(opts).merge(
action: UserHistory.actions[:merge_user],
target_user_id: user.id,
context: I18n.t("staff_action_logs.user_merged", username: source_username),
email: source_email
))
end
BADGE_FIELDS ||= %i{id name description long_description icon image badge_type_id
badge_grouping_id query allow_title multiple_grant listable target_posts
enabled auto_revoke show_posts system}
+10 -2
View File
@@ -1,7 +1,9 @@
class UserMerger
def initialize(source_user, target_user)
def initialize(source_user, target_user, acting_user = nil)
@source_user = source_user
@target_user = target_user
@acting_user = acting_user
@source_primary_email = source_user.email
end
def merge!
@@ -19,6 +21,7 @@ class UserMerger
delete_source_user
delete_source_user_references
log_merge
end
protected
@@ -353,7 +356,7 @@ class UserMerger
email: "#{@source_user.username}_#{SecureRandom.hex}@no-email.invalid"
)
UserDestroyer.new(Discourse.system_user).destroy(@source_user)
UserDestroyer.new(Discourse.system_user).destroy(@source_user, quiet: true)
end
def delete_source_user_references
@@ -366,6 +369,11 @@ class UserMerger
UserAction.where(acting_user_id: @source_user.id).delete_all
end
def log_merge
logger = StaffActionLogger.new(@acting_user || Discourse.system_user)
logger.log_user_merge(@target_user, @source_user.username, @source_primary_email)
end
def update_user_id(table_name, opts = {})
builder = update_user_id_sql_builder(table_name, opts)
builder.exec(source_user_id: @source_user.id, target_user_id: @target_user.id)