Add IP-based rules (#14963)
This commit is contained in:
		
							
								
								
									
										56
									
								
								app/controllers/admin/ip_blocks_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								app/controllers/admin/ip_blocks_controller.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
module Admin
 | 
			
		||||
  class IpBlocksController < BaseController
 | 
			
		||||
    def index
 | 
			
		||||
      authorize :ip_block, :index?
 | 
			
		||||
 | 
			
		||||
      @ip_blocks = IpBlock.page(params[:page])
 | 
			
		||||
      @form      = Form::IpBlockBatch.new
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def new
 | 
			
		||||
      authorize :ip_block, :create?
 | 
			
		||||
 | 
			
		||||
      @ip_block = IpBlock.new(ip: '', severity: :no_access, expires_in: 1.year)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def create
 | 
			
		||||
      authorize :ip_block, :create?
 | 
			
		||||
 | 
			
		||||
      @ip_block = IpBlock.new(resource_params)
 | 
			
		||||
 | 
			
		||||
      if @ip_block.save
 | 
			
		||||
        log_action :create, @ip_block
 | 
			
		||||
        redirect_to admin_ip_blocks_path, notice: I18n.t('admin.ip_blocks.created_msg')
 | 
			
		||||
      else
 | 
			
		||||
        render :new
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def batch
 | 
			
		||||
      @form = Form::IpBlockBatch.new(form_ip_block_batch_params.merge(current_account: current_account, action: action_from_button))
 | 
			
		||||
      @form.save
 | 
			
		||||
    rescue ActionController::ParameterMissing
 | 
			
		||||
      flash[:alert] = I18n.t('admin.ip_blocks.no_ip_block_selected')
 | 
			
		||||
    rescue Mastodon::NotPermittedError
 | 
			
		||||
      flash[:alert] = I18n.t('admin.custom_emojis.not_permitted')
 | 
			
		||||
    ensure
 | 
			
		||||
      redirect_to admin_ip_blocks_path
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    private
 | 
			
		||||
 | 
			
		||||
    def resource_params
 | 
			
		||||
      params.require(:ip_block).permit(:ip, :severity, :comment, :expires_in)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def action_from_button
 | 
			
		||||
      'delete' if params[:delete]
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def form_ip_block_batch_params
 | 
			
		||||
      params.require(:form_ip_block_batch).permit(ip_block_ids: [])
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user