mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 22:43:33 +08:00
FIX: In [DELETE] /admin/user/:id.json, parse boolean block_* parameter correctly (#17201)
When calling the API to delete a user: ``` curl -X DELETE "https://discourse.example.com/admin/users/159.json" \ -H "Content-Type: multipart/form-data;" \ -H "Api-Key: ***" \ -H "Api-Username: ***" \ -F "delete_posts=true" \ -F "block_email=false" \ -F "block_urls=false" \ -F "block_ip=false" ``` Setting the parameters `block_email`, `block_urls` and `block_ip`explicitly to `false` did not work because the values weren't being parsed to boolean.
This commit is contained in:
@ -410,8 +410,10 @@ class Admin::UsersController < Admin::AdminController
|
||||
user = User.find_by(id: params[:id].to_i)
|
||||
guardian.ensure_can_delete_user!(user)
|
||||
|
||||
options = params.slice(:block_email, :block_urls, :block_ip, :context, :delete_as_spammer)
|
||||
options[:delete_posts] = ActiveModel::Type::Boolean.new.cast(params[:delete_posts])
|
||||
options = params.slice(:context, :delete_as_spammer)
|
||||
[:delete_posts, :block_email, :block_urls, :block_ip].each do |param_name|
|
||||
options[param_name] = ActiveModel::Type::Boolean.new.cast(params[param_name])
|
||||
end
|
||||
options[:prepare_for_destroy] = true
|
||||
|
||||
hijack do
|
||||
|
Reference in New Issue
Block a user