You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
# frozen_string_literal: true |
|
|
|
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? |
|
|
|
@suspension = Form::AdminSuspensionConfirmation.new(suspension_params) |
|
|
|
if suspension_params[:acct] == @account.acct |
|
resolve_report! if suspension_params[:report_id].present? |
|
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 |
|
authorize @account, :unsuspend? |
|
@account.unsuspend! |
|
log_action :unsuspend, @account |
|
redirect_to admin_accounts_path |
|
end |
|
|
|
private |
|
|
|
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
|
|
|