Fix reported accounts not being whitelisted when resolving a spamcheck report (#13289)
This commit is contained in:
		
							parent
							
								
									c39ad4ab2f
								
							
						
					
					
						commit
						61f35c1a8a
					
				
					 3 changed files with 28 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -62,8 +62,6 @@ class Admin::AccountAction
 | 
			
		|||
 | 
			
		||||
  def process_action!
 | 
			
		||||
    case type
 | 
			
		||||
    when 'none'
 | 
			
		||||
      handle_resolve!
 | 
			
		||||
    when 'disable'
 | 
			
		||||
      handle_disable!
 | 
			
		||||
    when 'silence'
 | 
			
		||||
| 
						 | 
				
			
			@ -105,16 +103,6 @@ class Admin::AccountAction
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def handle_resolve!
 | 
			
		||||
    if with_report? && report.account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
 | 
			
		||||
      # This is an automated report and it is being dismissed, so it's
 | 
			
		||||
      # a false positive, in which case update the account's trust level
 | 
			
		||||
      # to prevent further spam checks
 | 
			
		||||
 | 
			
		||||
      target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def handle_disable!
 | 
			
		||||
    authorize(target_account.user, :disable?)
 | 
			
		||||
    log_action(:disable, target_account.user)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,6 +59,14 @@ class Report < ApplicationRecord
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def resolve!(acting_account)
 | 
			
		||||
    if account_id == -99 && target_account.trust_level == Account::TRUST_LEVELS[:untrusted]
 | 
			
		||||
      # This is an automated report and it is being dismissed, so it's
 | 
			
		||||
      # a false positive, in which case update the account's trust level
 | 
			
		||||
      # to prevent further spam checks
 | 
			
		||||
 | 
			
		||||
      target_account.update(trust_level: Account::TRUST_LEVELS[:trusted])
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    RemovalWorker.push_bulk(Status.with_discarded.discarded.where(id: status_ids).pluck(:id)) { |status_id| [status_id, { immediate: true }] }
 | 
			
		||||
    update!(action_taken: true, action_taken_by_account_id: acting_account.id)
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,6 +46,26 @@ describe Admin::ReportsController do
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #resolve' do
 | 
			
		||||
    it 'resolves the report' do
 | 
			
		||||
      report = Fabricate(:report)
 | 
			
		||||
 | 
			
		||||
      put :resolve, params: { id: report }
 | 
			
		||||
      expect(response).to redirect_to(admin_reports_path)
 | 
			
		||||
      report.reload
 | 
			
		||||
      expect(report.action_taken_by_account).to eq user.account
 | 
			
		||||
      expect(report.action_taken).to eq true
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'sets trust level when the report is an antispam one' do
 | 
			
		||||
      report = Fabricate(:report, account: Account.representative)
 | 
			
		||||
 | 
			
		||||
      put :resolve, params: { id: report }
 | 
			
		||||
      report.reload
 | 
			
		||||
      expect(report.target_account.trust_level).to eq Account::TRUST_LEVELS[:trusted]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe 'POST #reopen' do
 | 
			
		||||
    it 'reopens the report' do
 | 
			
		||||
      report = Fabricate(:report)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue