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.

56 lines
1.4 KiB

  1. # frozen_string_literal: true
  2. module Admin
  3. class IpBlocksController < BaseController
  4. def index
  5. authorize :ip_block, :index?
  6. @ip_blocks = IpBlock.page(params[:page])
  7. @form = Form::IpBlockBatch.new
  8. end
  9. def new
  10. authorize :ip_block, :create?
  11. @ip_block = IpBlock.new(ip: '', severity: :no_access, expires_in: 1.year)
  12. end
  13. def create
  14. authorize :ip_block, :create?
  15. @ip_block = IpBlock.new(resource_params)
  16. if @ip_block.save
  17. log_action :create, @ip_block
  18. redirect_to admin_ip_blocks_path, notice: I18n.t('admin.ip_blocks.created_msg')
  19. else
  20. render :new
  21. end
  22. end
  23. def batch
  24. @form = Form::IpBlockBatch.new(form_ip_block_batch_params.merge(current_account: current_account, action: action_from_button))
  25. @form.save
  26. rescue ActionController::ParameterMissing
  27. flash[:alert] = I18n.t('admin.ip_blocks.no_ip_block_selected')
  28. rescue Mastodon::NotPermittedError
  29. flash[:alert] = I18n.t('admin.custom_emojis.not_permitted')
  30. ensure
  31. redirect_to admin_ip_blocks_path
  32. end
  33. private
  34. def resource_params
  35. params.require(:ip_block).permit(:ip, :severity, :comment, :expires_in)
  36. end
  37. def action_from_button
  38. 'delete' if params[:delete]
  39. end
  40. def form_ip_block_batch_params
  41. params.require(:form_ip_block_batch).permit(ip_block_ids: [])
  42. end
  43. end
  44. end