Skip to content
Snippets Groups Projects
Forked from PortalMEC / portalmec
1113 commits behind the upstream repository.
learning_object_policy.rb 981 B
class LearningObjectPolicy < ApplicationPolicy
  include SociablePolicy
  include ReportablePolicy
  include TaggablePolicy

  class Scope < Scope
    def resolve
      if user.nil?
        scope.where(state: 'published')
      elsif user.is_admin?
        scope.all
      else
        scope.where(state: 'published')
      end
    end
  end

  def create?
    record if user_exists?
  end

  def update?
    record if owns?
  end

  def destroy?
    record if owns?
  end

  def destroy_attachment?
    record if owns?
  end

  def remove_thumbnail?
    record if owns?
  end

  def show?
    return record if record.published? || user.try(:is_admin?)
    return record if user == record.publisher
    ## TODO: falta verificar se o +record.publisher+ é uma instituição e +user+ faz parte
  end

  def index?
    record
  end

  def add_object?
    record if user_exists?
  end

  def remove_object?
    record if user_exists?
  end

  def owner
    record.publisher
  end

end