mirror of
https://github.com/discourse/discourse.git
synced 2024-12-27 14:48:13 +08:00
31 lines
1.1 KiB
Ruby
31 lines
1.1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Jobs
|
||
|
class MergeUser < ::Jobs::Base
|
||
|
def execute(args)
|
||
|
target_user_id = args[:target_user_id]
|
||
|
current_user_id = args[:current_user_id]
|
||
|
|
||
|
user = User.find_by(id: args[:user_id])
|
||
|
target_user = User.find_by(id: args[:target_user_id])
|
||
|
current_user = User.find_by(id: args[:current_user_id])
|
||
|
guardian = Guardian.new(current_user)
|
||
|
serializer_opts = { root: false, scope: guardian }
|
||
|
|
||
|
if user = UserMerger.new(user, target_user, current_user).merge!
|
||
|
user_json = AdminDetailedUserSerializer.new(user, serializer_opts).as_json
|
||
|
::MessageBus.publish "/merge_user",
|
||
|
{ success: "OK" }.merge(merged: true, user: user_json),
|
||
|
user_ids: [current_user.id]
|
||
|
else
|
||
|
::MessageBus.publish "/merge_user",
|
||
|
{ failed: "FAILED" }.merge(
|
||
|
user:
|
||
|
AdminDetailedUserSerializer.new(@user, serializer_opts).as_json,
|
||
|
),
|
||
|
user_ids: [current_user.id]
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|