aboutsummaryrefslogtreecommitdiff
path: root/app/models/form/account_batch.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/form/account_batch.rb')
-rw-r--r--app/models/form/account_batch.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/app/models/form/account_batch.rb b/app/models/form/account_batch.rb
index 60eaaf0e2..5bc44e809 100644
--- a/app/models/form/account_batch.rb
+++ b/app/models/form/account_batch.rb
@@ -2,6 +2,7 @@
class Form::AccountBatch
include ActiveModel::Model
+ include Authorization
attr_accessor :account_ids, :action, :current_account
@@ -13,6 +14,10 @@ class Form::AccountBatch
remove_from_followers!
when 'block_domains'
block_domains!
+ when 'approve'
+ approve!
+ when 'reject'
+ reject!
end
end
@@ -57,4 +62,18 @@ class Form::AccountBatch
ActivityPub::DeliveryWorker.perform_async(json, current_account.id, follow.account.inbox_url)
end
+
+ def approve!
+ users = accounts.includes(:user).map(&:user)
+
+ users.each { |user| authorize(user, :approve?) }
+ .each(&:approve!)
+ end
+
+ def reject!
+ records = accounts.includes(:user)
+
+ records.each { |account| authorize(account.user, :reject?) }
+ .each { |account| SuspendAccountService.new.call(account, including_user: true, destroy: true, skip_distribution: true) }
+ end
end