status_policy.rb (792B)
- # 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? && 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