class LearningObjectPolicy < ApplicationPolicy include SociablePolicy include ReportablePolicy include TaggablePolicy include SubjectablePolicy include StageablePolicy include SubmissionPolicy class Scope < Scope def resolve if user.nil? scope.where(state: 'published') elsif user_can_edit? scope.all else scope.where(state: 'published') end end end def create? record if user_exists? && user.is_submitter? end def update? record if owns? && user.is_submitter? end def publish? record if user_can_moderate? && record.submitted? 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.nil? && user_can_edit? ) return record if user == record.publisher ## TODO: falta verificar se o +record.publisher+ é uma instituição e +user+ faz parte # => return owner.users.include?(user) if owner.is_a?(Institution) (???) 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