mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 22:51:24 +08:00
FEATURE: Allow IP anonymization via admin user controller API (#11497)
* FEATURE: Allow IP anonymization via admin user controller API Co-authored-by: Penar Musaraj <pmusaraj@gmail.com>
This commit is contained in:
@ -489,7 +489,10 @@ class Admin::UsersController < Admin::AdminController
|
|||||||
|
|
||||||
def anonymize
|
def anonymize
|
||||||
guardian.ensure_can_anonymize_user!(@user)
|
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)
|
render json: success_json.merge(username: user.username)
|
||||||
else
|
else
|
||||||
render json: failed_json.merge(user: AdminDetailedUserSerializer.new(user, root: false).as_json)
|
render json: failed_json.merge(user: AdminDetailedUserSerializer.new(user, root: false).as_json)
|
||||||
|
@ -1103,4 +1103,21 @@ RSpec.describe Admin::UsersController do
|
|||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
Reference in New Issue
Block a user