From 745a5d84d2fae1993489f77e27b796d2fbd33b64 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Tue, 15 Dec 2020 15:48:16 -0500 Subject: [PATCH] FEATURE: Allow IP anonymization via admin user controller API (#11497) * FEATURE: Allow IP anonymization via admin user controller API Co-authored-by: Penar Musaraj --- app/controllers/admin/users_controller.rb | 5 ++++- spec/requests/admin/users_controller_spec.rb | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) 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