Fix webfinger response not returning 410 when account is suspended (#11869)
This commit is contained in:
		
							parent
							
								
									0e5b9e3ba0
								
							
						
					
					
						commit
						b671b91211
					
				@ -5,18 +5,22 @@ module WellKnown
 | 
				
			|||||||
    include RoutingHelper
 | 
					    include RoutingHelper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    before_action { response.headers['Vary'] = 'Accept' }
 | 
					    before_action { response.headers['Vary'] = 'Accept' }
 | 
				
			||||||
 | 
					    before_action :set_account
 | 
				
			||||||
 | 
					    before_action :check_account_suspension
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    rescue_from ActiveRecord::RecordNotFound, ActionController::ParameterMissing, with: :not_found
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def show
 | 
					    def show
 | 
				
			||||||
      @account = Account.find_local!(username_from_resource)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      expires_in 3.days, public: true
 | 
					      expires_in 3.days, public: true
 | 
				
			||||||
      render json: @account, serializer: WebfingerSerializer, content_type: 'application/jrd+json'
 | 
					      render json: @account, serializer: WebfingerSerializer, content_type: 'application/jrd+json'
 | 
				
			||||||
    rescue ActiveRecord::RecordNotFound, ActionController::ParameterMissing
 | 
					 | 
				
			||||||
      head 404
 | 
					 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private
 | 
					    private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def set_account
 | 
				
			||||||
 | 
					      @account = Account.find_local!(username_from_resource)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def username_from_resource
 | 
					    def username_from_resource
 | 
				
			||||||
      resource_user    = resource_param
 | 
					      resource_user    = resource_param
 | 
				
			||||||
      username, domain = resource_user.split('@')
 | 
					      username, domain = resource_user.split('@')
 | 
				
			||||||
@ -28,5 +32,17 @@ module WellKnown
 | 
				
			|||||||
    def resource_param
 | 
					    def resource_param
 | 
				
			||||||
      params.require(:resource)
 | 
					      params.require(:resource)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def check_account_suspension
 | 
				
			||||||
 | 
					      expires_in(3.minutes, public: true) && gone if @account.suspended?
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def not_found
 | 
				
			||||||
 | 
					      head 404
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def gone
 | 
				
			||||||
 | 
					      head 410
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user