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