diff --git a/app/models/collection_item.rb b/app/models/collection_item.rb
index 4fc48636bdb07fefc3468a79dc6dce01bafcb704..1a73aaed0001b832a727cc81d98110053ffd7b20 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/policies/collection_policy.rb b/app/policies/collection_policy.rb
index 7ca595c7cd867bdbaf48d7f9c858c140a0fe1a21..b39a280f49d2ced6d8ecca66b31597661d2c42d5 100644
--- a/app/policies/collection_policy.rb
+++ b/app/policies/collection_policy.rb
@@ -7,8 +7,12 @@ class CollectionPolicy < ApplicationPolicy
 
   class Scope < Scope
     def resolve
-      if !user.nil? && user.is_admin?
-        scope.all
+      if !user.nil?
+        if user.is_admin?
+          scope.all
+        else
+          scope.includes(:collection_items).where.not(:collection_items => {:collection_id => nil}).where("privacy = ? OR owner_id = ?", 'public', user.id)
+        end
       else
         scope.includes(:collection_items).where.not(:collection_items => {:collection_id => nil}).where(privacy: 'public')
       end
diff --git a/app/serializers/collection_item_serializer.rb b/app/serializers/collection_item_serializer.rb
index e085d36a8ac68a814ded456d5fa347827b08cabc..60c59d539e02a9b728b34dfea947c9e46a819aa8 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