FEATURE: Anonymize User. A way to remove a user but keep their topics and posts.

This commit is contained in:
Neil Lalonde
2015-03-06 16:44:54 -05:00
parent a68512bebf
commit 608647d02f
16 changed files with 401 additions and 100 deletions

View File

@ -22,7 +22,8 @@ class Admin::UsersController < Admin::AdminController
:remove_group,
:primary_group,
:generate_api_key,
:revoke_api_key]
:revoke_api_key,
:anonymize]
def index
users = ::AdminUserIndexQuery.new(params).find_users
@ -333,6 +334,15 @@ class Admin::UsersController < Admin::AdminController
end
def anonymize
guardian.ensure_can_anonymize_user!(@user)
if user = UserAnonymizer.new(@user, current_user).make_anonymous
render json: success_json.merge(username: user.username)
else
render json: failed_json.merge(user: AdminDetailedUserSerializer.new(user, root: false).as_json)
end
end
private
def fetch_user

View File

@ -93,7 +93,7 @@ class UsersController < ApplicationController
guardian.ensure_can_edit_username!(user)
# TODO proper error surfacing (result is a Model#save call)
result = user.change_username(params[:new_username], current_user)
result = UsernameChanger.change(user, params[:new_username], current_user)
raise Discourse::InvalidParameters.new(:new_username) unless result
render json: {