diff options
author | pluralcafe-docker <docker@plural.cafe> | 2018-08-23 06:16:14 +0000 |
---|---|---|
committer | pluralcafe-docker <docker@plural.cafe> | 2018-08-23 06:16:14 +0000 |
commit | 0fa521de89168ef33423fc7306a33d4a1c3badf3 (patch) | |
tree | ce3663d75ca93ea2d32e10de532eb18a230cf6e0 /app/controllers/admin/suspensions_controller.rb | |
parent | a4935a8e24dcfa865fb330693d8ec90beca1aa98 (diff) | |
parent | 8aa58e34bb2b62192a997ac7ea8919b22fc45f80 (diff) |
Merge branch 'glitch'
Diffstat (limited to 'app/controllers/admin/suspensions_controller.rb')
-rw-r--r-- | app/controllers/admin/suspensions_controller.rb | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/app/controllers/admin/suspensions_controller.rb b/app/controllers/admin/suspensions_controller.rb index 5f222e125..0c7bdad9e 100644 --- a/app/controllers/admin/suspensions_controller.rb +++ b/app/controllers/admin/suspensions_controller.rb @@ -4,11 +4,24 @@ module Admin class SuspensionsController < BaseController before_action :set_account + def new + @suspension = Form::AdminSuspensionConfirmation.new(report_id: params[:report_id]) + end + def create authorize @account, :suspend? - Admin::SuspensionWorker.perform_async(@account.id) - log_action :suspend, @account - redirect_to admin_accounts_path + + @suspension = Form::AdminSuspensionConfirmation.new(suspension_params) + + if suspension_params[:acct] == @account.acct + resolve_report! if suspension_params[:report_id] + perform_suspend! + mark_reports_resolved! + redirect_to admin_accounts_path + else + flash.now[:alert] = I18n.t('admin.suspensions.bad_acct_msg') + render :new + end end def destroy @@ -23,5 +36,25 @@ module Admin def set_account @account = Account.find(params[:account_id]) end + + def suspension_params + params.require(:form_admin_suspension_confirmation).permit(:acct, :report_id) + end + + def resolve_report! + report = Report.find(suspension_params[:report_id]) + report.resolve!(current_account) + log_action :resolve, report + end + + def perform_suspend! + @account.suspend! + Admin::SuspensionWorker.perform_async(@account.id) + log_action :suspend, @account + end + + def mark_reports_resolved! + Report.where(target_account: @account).unresolved.update_all(action_taken: true, action_taken_by_account_id: current_account.id) + end end end |