Handle ActivityPub follows correctly (#4571)
* Handle ActivityPub follows correctly ActivityPub follows are follow-requests. Always require an Accept. If account is not locked, auto-accept. * Handle ActivityPub Accept/Reject-Follow * Fix wrong method * Fix wrong class
This commit is contained in:
		
							
								
								
									
										25
									
								
								app/lib/activitypub/activity/reject.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								app/lib/activitypub/activity/reject.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
class ActivityPub::Activity::Reject < ActivityPub::Activity
 | 
			
		||||
  def perform
 | 
			
		||||
    case @object['type']
 | 
			
		||||
    when 'Follow'
 | 
			
		||||
      reject_follow
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
 | 
			
		||||
  def reject_follow
 | 
			
		||||
    target_account = account_from_uri(target_uri)
 | 
			
		||||
 | 
			
		||||
    return if target_account.nil? || !target_account.local?
 | 
			
		||||
 | 
			
		||||
    follow_request = FollowRequest.find_by(account: target_account, target_account: @account)
 | 
			
		||||
    follow_request&.reject!
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def target_uri
 | 
			
		||||
    @target_uri ||= @object['object'].is_a?(String) ? @object['object'] : @object['object']['id']
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user