Make default admin UI page reports. Add admin UI for creating a domain block
This commit is contained in:
parent
f6e9251054
commit
b7c1b12367
11 changed files with 59 additions and 393 deletions
|
@ -9,6 +9,24 @@ class Admin::DomainBlocksController < ApplicationController
|
|||
@blocks = DomainBlock.paginate(page: params[:page], per_page: 40)
|
||||
end
|
||||
|
||||
def new
|
||||
@domain_block = DomainBlock.new
|
||||
end
|
||||
|
||||
def create
|
||||
@domain_block = DomainBlock.new(resource_params)
|
||||
|
||||
if @domain_block.save
|
||||
DomainBlockWorker.perform_async(@domain_block.id)
|
||||
redirect_to admin_domain_blocks_path, notice: 'Domain block is now being processed'
|
||||
else
|
||||
render action: :new
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def resource_params
|
||||
params.require(:domain_block).permit(:domain, :severity)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class BlockDomainService < BaseService
|
||||
def call(domain, severity)
|
||||
DomainBlock.where(domain: domain).first_or_create!(domain: domain, severity: severity)
|
||||
|
||||
if severity == :silence
|
||||
Account.where(domain: domain).update_all(silenced: true)
|
||||
def call(domain_block)
|
||||
if domain_block.silence?
|
||||
Account.where(domain: domain_block.domain).update_all(silenced: true)
|
||||
else
|
||||
Account.where(domain: domain).find_each do |account|
|
||||
Account.where(domain: domain_block.domain).find_each do |account|
|
||||
account.subscription(api_subscription_url(account.id)).unsubscribe if account.subscribed?
|
||||
SuspendAccountService.new.call(account)
|
||||
end
|
||||
|
|
|
@ -14,3 +14,4 @@
|
|||
%td= block.severity
|
||||
|
||||
= will_paginate @blocks, pagination_options
|
||||
= link_to 'Add new', new_admin_domain_block_path, class: 'button'
|
||||
|
|
18
app/views/admin/domain_blocks/new.html.haml
Normal file
18
app/views/admin/domain_blocks/new.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
|||
- content_for :page_title do
|
||||
New domain block
|
||||
|
||||
= simple_form_for @domain_block, url: admin_domain_blocks_path do |f|
|
||||
= render 'shared/error_messages', object: @domain_block
|
||||
|
||||
%p.hint The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts.
|
||||
|
||||
= f.input :domain, placeholder: 'Domain'
|
||||
= f.input :severity, collection: DomainBlock.severities.keys, wrapper: :with_label, include_blank: false
|
||||
|
||||
%p.hint
|
||||
%strong Silence
|
||||
will make the account's posts invisible to anyone who isn't following them.
|
||||
%strong Suspend
|
||||
will remove all of the account's content, media, and profile data.
|
||||
.actions
|
||||
= f.button :button, 'Create block', type: :submit
|
11
app/workers/domain_block_worker.rb
Normal file
11
app/workers/domain_block_worker.rb
Normal file
|
@ -0,0 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class DomainBlockWorker
|
||||
include Sidekiq::Worker
|
||||
|
||||
def perform(domain_block_id)
|
||||
BlockDomainService.new.call(DomainBlock.find(domain_block_id))
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
true
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue