holderdeord/hdo-site

View on GitHub
app/policies/issue_policy.rb

Summary

Maintainability
A
0 mins
Test Coverage
class IssuePolicy
  attr_reader :user, :record

  class Scope
    attr_accessor :user, :scope

    def initialize(user, scope)
      @user, @scope = user, scope
    end

    def resolve
      if user
        scope
      else
        scope.published
      end
    end
  end

  def initialize(user, record)
    @user, @record = user, record
  end

  def show?
    record.published? || logged_in?
  end

  def edit?
    logged_in? && (user.admin? || user.superadmin?)
  end
  alias_method :create?, :edit?

  def publish?
    edit? && user.superadmin?
  end

  def scope
    Pundit.policy_scope!(user, record.class)
  end

  private

  def logged_in?
    !!(user && user.is_a?(User))
  end

end