diff --git a/app/models/article.rb b/app/models/article.rb index 764ae4e..bc6e5f5 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -498,13 +498,13 @@ class Article < ActiveRecord::Base scope :display_filter, lambda {|user, profile| return published if (user.nil? && profile && profile.public?) - return [] if user.nil? || profile.nil? || (profile && !profile.public? && !user.follows?(profile)) + return [] if user.nil? || (profile && !profile.public? && !user.follows?(profile)) where( [ "published = ? OR last_changed_by_id = ? OR profile_id = ? OR ? OR (show_to_followers = ? AND ? AND profile_id = ?)", true, user.id, user.id, profile.nil? ? false : user.has_permission?(:view_private_content, profile), - true, user.follows?(profile), profile.id + true, user.follows?(profile), (profile.nil? ? nil : profile.id) ] ) } diff --git a/test/unit/article_test.rb b/test/unit/article_test.rb index 7d99427..658a735 100644 --- a/test/unit/article_test.rb +++ b/test/unit/article_test.rb @@ -2040,6 +2040,17 @@ class ArticleTest < ActiveSupport::TestCase assert_equal [], Article.display_filter(user, nil) end + should 'display_filter show person public content to non friends passing nil as profile parameter' do + user = create_user('someuser').person + p = fast_create(Person) + assert !p.is_a_friend?(user) + assert !user.is_admin? + Article.delete_all + a1 = fast_create(Article, :profile_id => p.id) + a2 = fast_create(Article) + assert_equivalent [a1,a2], Article.display_filter(user, nil) + end + should 'display_filter do not show community private content to non members passing nil as profile parameter' do user = create_user('someuser').person p = fast_create(Community) @@ -2049,6 +2060,16 @@ class ArticleTest < ActiveSupport::TestCase assert_equal [], Article.display_filter(user, nil) end + should 'display_filter show community public content to non members passing nil as profile parameter' do + user = create_user('someuser').person + p = fast_create(Community) + assert !user.is_member_of?(p) + Article.delete_all + a1 = fast_create(Article, :profile_id => p.id) + a2 = fast_create(Article) + assert_equivalent [a1,a2], Article.display_filter(user, nil) + end + should 'display_filter show community public content of private community for user members' do user = create_user('someuser').person p = fast_create(Community, :public_profile => false) -- libgit2 0.21.2