diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index d44c38dc4dd..63d97b4f8c0 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -489,7 +489,10 @@ class Admin::UsersController < Admin::AdminController def anonymize guardian.ensure_can_anonymize_user!(@user) - if user = UserAnonymizer.new(@user, current_user).make_anonymous + opts = {} + opts[:anonymize_ip] = params[:anonymize_ip] if params[:anonymize_ip].present? + + if user = UserAnonymizer.new(@user, current_user, opts).make_anonymous render json: success_json.merge(username: user.username) else render json: failed_json.merge(user: AdminDetailedUserSerializer.new(user, root: false).as_json) diff --git a/spec/requests/admin/users_controller_spec.rb b/spec/requests/admin/users_controller_spec.rb index 06219ebebc5..6115c878e81 100644 --- a/spec/requests/admin/users_controller_spec.rb +++ b/spec/requests/admin/users_controller_spec.rb @@ -1103,4 +1103,21 @@ RSpec.describe Admin::UsersController do end end + describe "#anonymize" do + it "will make the user anonymous" do + put "/admin/users/#{user.id}/anonymize.json" + expect(response.status).to eq(200) + expect(response.parsed_body['username']).to be_present + end + + it "supports `anonymize_ip`" do + Jobs.run_immediately! + sl = Fabricate(:search_log, user_id: user.id) + put "/admin/users/#{user.id}/anonymize.json?anonymize_ip=127.0.0.2" + expect(response.status).to eq(200) + expect(response.parsed_body['username']).to be_present + expect(sl.reload.ip_address).to eq('127.0.0.2') + end + end + end