Fix: 参照で非公開投稿が見えてしまう問題

This commit is contained in:
KMY 2023-10-08 18:39:20 +09:00
parent 39c1572418
commit 10066eac4e
2 changed files with 10 additions and 1 deletions

View file

@ -44,7 +44,7 @@ class Api::V1::StatusesController < Api::BaseController
ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account) ancestors_results = @status.in_reply_to_id.nil? ? [] : @status.ancestors(ancestors_limit, current_account)
descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit) descendants_results = @status.descendants(descendants_limit, current_account, descendants_depth_limit)
references_results = @status.references references_results = @status.readable_references(current_account)
loaded_ancestors = cache_collection(ancestors_results, Status) loaded_ancestors = cache_collection(ancestors_results, Status)
loaded_descendants = cache_collection(descendants_results, Status) loaded_descendants = cache_collection(descendants_results, Status)
loaded_references = cache_collection(references_results, Status) loaded_references = cache_collection(references_results, Status)

View file

@ -11,6 +11,15 @@ module StatusThreadingConcern
find_statuses_from_tree_path(descendant_ids(limit, depth), account, promote: true) find_statuses_from_tree_path(descendant_ids(limit, depth), account, promote: true)
end end
def readable_references(account = nil)
statuses = references.to_a
account_ids = statuses.map(&:account_id).uniq
domains = statuses.filter_map(&:account_domain).uniq
relations = account&.relations_map(account_ids, domains) || {}
statuses.reject! { |status| StatusFilter.new(status, account, relations).filtered? }
statuses
end
def self_replies(limit) def self_replies(limit)
account.statuses.where(in_reply_to_id: id, visibility: [:public, :unlisted, :public_unlisted, :login]).reorder(id: :asc).limit(limit) account.statuses.where(in_reply_to_id: id, visibility: [:public, :unlisted, :public_unlisted, :login]).reorder(id: :asc).limit(limit)
end end