diff --git a/lib/topic_query.rb b/lib/topic_query.rb index beb8eeaa2d4..2b529b2f1bd 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -533,7 +533,7 @@ class TopicQuery if type == :group result = result .includes(:allowed_users) - .joins("INNER JOIN topic_allowed_groups tag ON tag.topic_id = topics.id AND tag.group_id IN (SELECT id FROM groups WHERE name ilike '#{sanitize_sql_array([@options[:group_name]])}')") + .joins("INNER JOIN topic_allowed_groups tag ON tag.topic_id = topics.id AND tag.group_id IN (SELECT id FROM groups WHERE LOWER(name) = '#{PG::Connection.escape_string(@options[:group_name].downcase)}')") unless user.admin? result = result.joins("INNER JOIN group_users gu ON gu.group_id = tag.group_id AND gu.user_id = #{user.id.to_i}") diff --git a/spec/components/topic_query_spec.rb b/spec/components/topic_query_spec.rb index a0707885e59..f1ee8566217 100644 --- a/spec/components/topic_query_spec.rb +++ b/spec/components/topic_query_spec.rb @@ -1157,7 +1157,9 @@ describe TopicQuery do end it 'should return the right list for an admin not part of the group' do - topics = TopicQuery.new(nil, group_name: group.name) + group.update!(name: group.name.capitalize) + + topics = TopicQuery.new(nil, group_name: group.name.upcase) .list_private_messages_group(Fabricate(:admin)) .topics