catstodon/app/policies/status_policy.rb
ThibG e5dd385431 Allow boosting own private toots (#6157)
* Adjust policy to allow boosting own private toots

* Add ability to reblog private toots from dropdown menu
2018-04-17 23:35:45 +02:00

49 lines
804 B
Ruby

# frozen_string_literal: true
class StatusPolicy < ApplicationPolicy
def index?
staff?
end
def show?
if direct?
owned? || record.mentions.where(account: current_account).exists?
elsif private?
owned? || current_account&.following?(author) || record.mentions.where(account: current_account).exists?
else
current_account.nil? || !author.blocking?(current_account)
end
end
def reblog?
!direct? && (!private? || owned?) && show?
end
def destroy?
staff? || owned?
end
alias unreblog? destroy?
def update?
staff?
end
private
def direct?
record.direct_visibility?
end
def owned?
author.id == current_account&.id
end
def private?
record.private_visibility?
end
def author
record.account
end
end