Sha256: 0f874dd56e6c12c9da63907cb6e3dae359b0a96b6b7c0afe9c1b69faad9972c8

Contents?: true

Size: 1.09 KB

Versions: 9

Compression:

Stored size: 1.09 KB

Contents

module Thredded
  class TopicUserPermissions
    attr_reader :topic, :user, :user_details, :messageboard

    def initialize(topic, user, user_details)
      @topic = topic
      @messageboard = topic.messageboard
      @user = user
      @user_details = user_details || UserDetail.new
    end

    def creatable?
      member? || messageboard_restrictions_allow?
    end

    def manageable?
      superadmin? || started_by_user? || administrates_messageboard?
    end

    def readable?
      MessageboardUserPermissions.new(messageboard, user).readable?
    end

    private

    def messageboard_restrictions_allow?
      user.valid? &&
        (
          messageboard.public? ||
          messageboard.restricted_to_logged_in? ||
          messageboard.posting_for_logged_in?
        )
    end

    def member?
      user.valid? && messageboard.has_member?(user)
    end

    def superadmin?
      user_details.superadmin?
    end

    def started_by_user?
      topic.user_id == user.id
    end

    def administrates_messageboard?
      user.valid? && messageboard.member_is_a?(user, 'admin')
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
thredded-0.0.10 lib/thredded/topic_user_permissions.rb
thredded-0.0.9 lib/thredded/topic_user_permissions.rb
thredded-0.0.8 lib/thredded/topic_user_permissions.rb
thredded-0.0.7 lib/thredded/topic_user_permissions.rb
thredded-0.0.6 lib/thredded/topic_user_permissions.rb
thredded-0.0.5 lib/thredded/topic_user_permissions.rb
thredded-0.0.4 lib/thredded/topic_user_permissions.rb
thredded-0.0.3 lib/thredded/topic_user_permissions.rb
thredded-0.0.1 lib/thredded/topic_user_permissions.rb