aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-03-28 23:57:38 +0200
committerGitHub <noreply@github.com>2022-03-28 23:57:38 +0200
commit894956e20cfa7ea36bb124fb3561fde5694ac955 (patch)
tree54cbb73cd9d0455378876ad3eb6c83cedc75fb32 /app
parent22eeaf2645e44ea800a6e4c4acb7bf9d72211344 (diff)
downloadmastodon-894956e20cfa7ea36bb124fb3561fde5694ac955.tar
mastodon-894956e20cfa7ea36bb124fb3561fde5694ac955.tar.gz
mastodon-894956e20cfa7ea36bb124fb3561fde5694ac955.tar.bz2
mastodon-894956e20cfa7ea36bb124fb3561fde5694ac955.zip
Fix /api/v1/admin/accounts (#17887)
* Fix /api/v1/admin/accounts Compatibility was broken since #17009 which changed the underlying filter class without changing the controller. This commits restore support for the old parameters. * Add /api/v2/admin/accounts with the new parameters * Add tests * Add missing filter for `silenced` status Co-authored-by: Eugen Rochko <eugen@zeonfederated.com> Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
Diffstat (limited to 'app')
-rw-r--r--app/controllers/api/v1/admin/accounts_controller.rb16
-rw-r--r--app/controllers/api/v2/admin/accounts_controller.rb31
-rw-r--r--app/models/account_filter.rb4
3 files changed, 50 insertions, 1 deletions
diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb
index 65330b8c8..4b6dab208 100644
--- a/app/controllers/api/v1/admin/accounts_controller.rb
+++ b/app/controllers/api/v1/admin/accounts_controller.rb
@@ -104,13 +104,27 @@ class Api::V1::Admin::AccountsController < Api::BaseController
end
def filtered_accounts
- AccountFilter.new(filter_params).results
+ AccountFilter.new(translated_filter_params).results
end
def filter_params
params.permit(*FILTER_PARAMS)
end
+ def translated_filter_params
+ translated_params = { origin: 'local', status: 'active' }.merge(filter_params.slice(*AccountFilter::KEYS))
+
+ translated_params[:origin] = 'remote' if params[:remote].present?
+
+ %i(active pending disabled silenced suspended).each do |status|
+ translated_params[:status] = status.to_s if params[status].present?
+ end
+
+ translated_params[:permissions] = 'staff' if params[:staff].present?
+
+ translated_params
+ end
+
def insert_pagination_headers
set_pagination_headers(next_path, prev_path)
end
diff --git a/app/controllers/api/v2/admin/accounts_controller.rb b/app/controllers/api/v2/admin/accounts_controller.rb
new file mode 100644
index 000000000..a89e6835e
--- /dev/null
+++ b/app/controllers/api/v2/admin/accounts_controller.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+class Api::V2::Admin::AccountsController < Api::V1::Admin::AccountsController
+ FILTER_PARAMS = %i(
+ origin
+ status
+ permissions
+ username
+ by_domain
+ display_name
+ email
+ ip
+ invited_by
+ ).freeze
+
+ PAGINATION_PARAMS = (%i(limit) + FILTER_PARAMS).freeze
+
+ private
+
+ def filtered_accounts
+ AccountFilter.new(filter_params).results
+ end
+
+ def filter_params
+ params.permit(*FILTER_PARAMS)
+ end
+
+ def pagination_params(core_params)
+ params.slice(*PAGINATION_PARAMS).permit(*PAGINATION_PARAMS).merge(core_params)
+ end
+end
diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb
index 9da1522dd..ec309ce09 100644
--- a/app/models/account_filter.rb
+++ b/app/models/account_filter.rb
@@ -80,6 +80,10 @@ class AccountFilter
accounts_with_users.merge(User.pending)
when 'suspended'
Account.suspended
+ when 'disabled'
+ accounts_with_users.merge(User.disabled)
+ when 'silenced'
+ Account.silenced
else
raise "Unknown status: #{value}"
end