Fix tagged param not being normalized before querying tags (#10249)
				
					
				
			This commit is contained in:
		
							parent
							
								
									d4ef90eae3
								
							
						
					
					
						commit
						06663fcf87
					
				
					 5 changed files with 24 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -80,7 +80,13 @@ class AccountsController < ApplicationController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def hashtag_scope
 | 
			
		||||
    Status.tagged_with(Tag.find_by(name: params[:tag].downcase)&.id)
 | 
			
		||||
    tag = Tag.find_normalized(params[:tag])
 | 
			
		||||
 | 
			
		||||
    if tag
 | 
			
		||||
      Status.tagged_with(tag.id)
 | 
			
		||||
    else
 | 
			
		||||
      Status.none
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_account
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -69,7 +69,13 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def hashtag_scope
 | 
			
		||||
    Status.tagged_with(Tag.find_by(name: params[:tagged])&.id)
 | 
			
		||||
    tag = Tag.find_normalized(params[:tagged])
 | 
			
		||||
 | 
			
		||||
    if tag
 | 
			
		||||
      Status.tagged_with(tag.id)
 | 
			
		||||
    else
 | 
			
		||||
      Status.none
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def pagination_params(core_params)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ class Api::V1::Timelines::TagController < Api::BaseController
 | 
			
		|||
  private
 | 
			
		||||
 | 
			
		||||
  def load_tag
 | 
			
		||||
    @tag = Tag.find_by(name: params[:id].downcase)
 | 
			
		||||
    @tag = Tag.find_normalized(params[:id])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def load_statuses
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ class TagsController < ApplicationController
 | 
			
		|||
  before_action :set_instance_presenter
 | 
			
		||||
 | 
			
		||||
  def show
 | 
			
		||||
    @tag = Tag.find_by!(name: params[:id].downcase)
 | 
			
		||||
    @tag = Tag.find_normalized!(params[:id])
 | 
			
		||||
 | 
			
		||||
    respond_to do |format|
 | 
			
		||||
      format.html do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,6 +72,14 @@ class Tag < ApplicationRecord
 | 
			
		|||
         .limit(limit)
 | 
			
		||||
         .offset(offset)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def find_normalized(name)
 | 
			
		||||
      find_by(name: name.mb_chars.downcase.to_s)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def find_normalized!(name)
 | 
			
		||||
      find_normalized(name) || raise(ActiveRecord::RecordNotFound)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  private
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue