try to tighten up local only toot stuff, like... properly (#163)

* try to tighten up local only toot stuff, like... properly

* try to un-break tests
pull/12504/head
beatrix 2017-10-09 09:56:17 -04:00 committed by GitHub
parent 92a3181dc6
commit f0a2a6c875
4 changed files with 13 additions and 2 deletions

View File

@ -48,7 +48,7 @@ class StreamEntriesController < ApplicationController
@type = @stream_entry.activity_type.downcase
raise ActiveRecord::RecordNotFound if @stream_entry.activity.nil?
authorize @stream_entry.activity, :show? if @stream_entry.hidden?
authorize @stream_entry.activity, :show? if @stream_entry.hidden? || @stream_entry.local_only?
rescue Mastodon::NotPermittedError
# Reraise in order to get a 404
raise ActiveRecord::RecordNotFound

View File

@ -257,6 +257,11 @@ class Status < ApplicationRecord
end
end
def local_only?
# match both with and without U+FE0F (the emoji variation selector)
/👁\ufe0f?\z/.match?(content)
end
private
def store_uri

View File

@ -28,7 +28,7 @@ class StreamEntry < ApplicationRecord
scope :recent, -> { reorder(id: :desc) }
scope :with_includes, -> { includes(:account, status: STATUS_INCLUDES) }
delegate :target, :title, :content, :thread,
delegate :target, :title, :content, :thread, :local_only?,
to: :status,
allow_nil: true

View File

@ -9,6 +9,8 @@ class StatusPolicy
end
def show?
return false if local_only? && account.nil?
if direct?
owned? || status.mentions.where(account: account).exists?
elsif private?
@ -45,4 +47,8 @@ class StatusPolicy
def private?
status.private_visibility?
end
def local_only?
status.local_only?
end
end