Fix failed profile verification when rel attribute including values other than me (#8733)
This commit is contained in:
		
							parent
							
								
									d149c2dc78
								
							
						
					
					
						commit
						3da1cc7d5e
					
				
					 2 changed files with 16 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -27,6 +27,6 @@ class VerifyLinkService < BaseService
 | 
			
		|||
  def link_back_present?
 | 
			
		||||
    return false if @body.empty?
 | 
			
		||||
 | 
			
		||||
    Nokogiri::HTML(@body).xpath('//a[@rel="me"]|//link[@rel="me"]').any? { |link| link['href'] == @link_back }
 | 
			
		||||
    Nokogiri::HTML(@body).xpath('//a[contains(concat(" ", normalize-space(@rel), " "), " me ")]|//link[contains(concat(" ", normalize-space(@rel), " "), " me ")]').any? { |link| link['href'] == @link_back }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,21 @@ RSpec.describe VerifyLinkService, type: :service do
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context 'when a link contains an <a rel="noopener"> back' do
 | 
			
		||||
    let(:html) do
 | 
			
		||||
      <<-HTML
 | 
			
		||||
        <!doctype html>
 | 
			
		||||
        <body>
 | 
			
		||||
          <a href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="noopener me" target="_blank">Follow me on Mastodon</a>
 | 
			
		||||
        </body>
 | 
			
		||||
      HTML
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    it 'marks the field as verified' do
 | 
			
		||||
      expect(field.verified?).to be true
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context 'when a link contains a <link> back' do
 | 
			
		||||
    let(:html) do
 | 
			
		||||
      <<-HTML
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue