Fix `tagged` param not being normalized before querying tags (#10249)

This commit is contained in:
Eugen Rochko 2019-03-13 13:02:13 +01:00 committed by GitHub
parent d4ef90eae3
commit 06663fcf87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 4 deletions

View File

@ -80,7 +80,13 @@ class AccountsController < ApplicationController
end end
def hashtag_scope 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 end
def set_account def set_account

View File

@ -69,7 +69,13 @@ class Api::V1::Accounts::StatusesController < Api::BaseController
end end
def hashtag_scope 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 end
def pagination_params(core_params) def pagination_params(core_params)

View File

@ -14,7 +14,7 @@ class Api::V1::Timelines::TagController < Api::BaseController
private private
def load_tag def load_tag
@tag = Tag.find_by(name: params[:id].downcase) @tag = Tag.find_normalized(params[:id])
end end
def load_statuses def load_statuses

View File

@ -9,7 +9,7 @@ class TagsController < ApplicationController
before_action :set_instance_presenter before_action :set_instance_presenter
def show def show
@tag = Tag.find_by!(name: params[:id].downcase) @tag = Tag.find_normalized!(params[:id])
respond_to do |format| respond_to do |format|
format.html do format.html do

View File

@ -72,6 +72,14 @@ class Tag < ApplicationRecord
.limit(limit) .limit(limit)
.offset(offset) .offset(offset)
end 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 end
private private