5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 19:36:21 +00:00
panel/app/controllers/instance_moderations_controller.rb

56 lines
1.5 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Actualiza la relación entre un sitio y una instancia
class InstanceModerationsController < ApplicationController
before_action :authorize_policy, except: %i[action_on_several]
around_action :redirect_to_moderation_queue!
def pause
instance_moderation.pause! if instance_moderation.may_pause?
end
def allow
instance_moderation.allow! if instance_moderation.may_allow?
end
def block
instance_moderation.block! if instance_moderation.may_block?
end
def action_on_several
instance_moderations = site.instance_moderations.where(id: params[:instance_moderation])
authorize instance_moderations
action = params[:instance_moderation_action].to_sym
method = :"#{action}!"
may = :"may_#{action}?"
events = instance_moderation.aasm.events.map(&:name)
return unless events.include? action
InstanceModeration.transaction do
instance_moderations.find_each do |instance_moderation|
instance_moderation.public_send(method) if instance_moderation.public_send(may)
end
end
end
private
def redirect_to_moderation_queue!(&action)
redirect_back fallback_location: site_moderation_queue_path, state: session[:moderation_queue_filtered_by_state]
yield
end
# @return [InstanceModeration]
def instance_moderation
@instance_moderation ||= site.instance_moderations.find(params[:instance_moderation_id])
end
def authorize_policy
authorize instance_moderation
end
end