Sha256: 0d496b239fd141ca9b724b0b6c89d174def352c611b59ab5715b0c4bbf8ad4cb
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module Thredded class PostPolicy # The scope of readable posts. # MessageboardPolicy must be applied separately. class Scope # @param user [Thredded.user_class] # @param scope [ActiveRecord::Relation<Thredded::Post>] def initialize(user, scope) @user = user @scope = scope end # @return [ActiveRecord::Relation<Thredded::Post>] def resolve @scope.moderation_state_visible_to_user(@user) end end # @param user [Thredded.user_class] # @param post [Thredded::Post] def initialize(user, post) @user = user @post = post end def create? @user.thredded_admin? || !@post.postable.locked? && messageboard_policy.post? end def read? Thredded::TopicPolicy.new(@user, @post.postable).read? && @post.moderation_state_visible_to_user?(@user) end def update? @user.thredded_admin? || own_post? || messageboard_policy.moderate? end def destroy? !@post.first_post_in_topic? && update? end def anonymous? @user.thredded_anonymous? end delegate :moderate?, to: :messageboard_policy private def messageboard_policy @messageboard_policy ||= Thredded::MessageboardPolicy.new(@user, @post.messageboard) end def own_post? !anonymous? && @user.id == @post.user_id end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
thredded-0.12.1 | app/policies/thredded/post_policy.rb |
thredded-0.12.0 | app/policies/thredded/post_policy.rb |
thredded-0.11.1 | app/policies/thredded/post_policy.rb |