From 02b7b1a13eca90d9778a66174dc4d2bbc22ca8ee Mon Sep 17 00:00:00 2001
From: Clarissa <cdp13@inf.ufpr.br>
Date: Mon, 8 May 2017 11:49:46 -0300
Subject: [PATCH] #214: fix bug - Dont show private collection inside a public
 collection

---
 app/models/collection_item.rb                 |  8 ++++++++
 app/serializers/collection_item_serializer.rb | 13 +++++++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/app/models/collection_item.rb b/app/models/collection_item.rb
index 4fc48636..1a73aaed 100644
--- a/app/models/collection_item.rb
+++ b/app/models/collection_item.rb
@@ -25,6 +25,14 @@ class CollectionItem < ApplicationRecord
     collection
   end
 
+  def public?
+    collectionable.privacy == 'public'
+  end
+
+  def owner?(candidate)
+    collectionable.owner == candidate
+  end
+
   def thumbnail
     collectionable_type == 'LearningObject' ?  LearningObject.find(collectionable_id).default_thumbnail : Collection.find(collectionable_id).thumbnail
   end
diff --git a/app/serializers/collection_item_serializer.rb b/app/serializers/collection_item_serializer.rb
index e085d36a..60c59d53 100644
--- a/app/serializers/collection_item_serializer.rb
+++ b/app/serializers/collection_item_serializer.rb
@@ -1,9 +1,18 @@
 class CollectionItemSerializer < ActiveModel::Serializer
   cache key: 'collection_item', expires_in: 24.hours
+  
   def collectionable
-    serializer = object.collectionable_type == "LearningObject" ?  ::LearningObjectSerializer : ::CollectionMinSerializer
-    serializer.new(object.collectionable, {scope: current_user, scope_name: :current_user}).serializable_hash
+    if ( object.collectionable_type == "LearningObject" )
+    	serializer = ::LearningObjectSerializer
+    elsif ( object.public? || (current_user && ( object.owner?(current_user) || current_user.is_admin? )) )
+    	serializer = ::CollectionMinSerializer
+    end
+
+    if ( !serializer.blank? )
+    	serializer.new(object.collectionable, {scope: current_user, scope_name: :current_user}).serializable_hash
+  	end
   end
+
   belongs_to :collectionable, polymorphic: true
   attributes :id, :position, :collectionable, :collectionable_type
 end
-- 
GitLab