mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 19:57:18 +08:00
FEATURE: Anonymize User. A way to remove a user but keep their topics and posts.
This commit is contained in:
@ -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
|
||||
|
@ -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: {
|
||||
|
Reference in New Issue
Block a user