Sha256: 134f73c87f96fc8d5d98319a6bd6c0c0e4acad91427a2d0d89aedcd9a4c78a6e

Contents?: true

Size: 675 Bytes

Versions: 4

Compression:

Stored size: 675 Bytes

Contents

# frozen_string_literal: true
module Thredded
  class TopicPolicy
    # @param user [Thredded.user_class]
    # @param topic [Thredded::Topic]
    def initialize(user, topic)
      @user = user
      @topic = topic
      @messageboard_user_permission = MessageboardPolicy.new(user, topic.messageboard)
    end

    def create?
      @messageboard_user_permission.post?
    end

    def read?
      @messageboard_user_permission.read?
    end

    def update?
      @user.thredded_admin? || @topic.user_id == @user.id || moderate?
    end

    def destroy?
      @user.thredded_admin?
    end

    def moderate?
      @messageboard_user_permission.moderate?
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
thredded-0.4.0 app/policies/thredded/topic_policy.rb
thredded-0.3.2 app/policies/thredded/topic_policy.rb
thredded-0.3.1 app/policies/thredded/topic_policy.rb
thredded-0.3.0 app/policies/thredded/topic_policy.rb