mirror of
https://github.com/discourse/discourse.git
synced 2026-09-05 04:40:41 -05:00
FEATURE: Log user merge in staff logs
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user