Commit f8dfd63b6d5dce44e02d2ced8ebf4cfa5f4f7fcd
Exists in
master
and in
29 other branches
Merge branch 'privacy_fix' into 'master'
Article privacy fixies * Fix article privacy to not consider invisible profiles * Change feed published method to consider it's parent privacy * Closes #148 See merge request !723
Showing
5 changed files
with
48 additions
and
4 deletions
Show diff stats
app/models/article.rb
@@ -29,9 +29,14 @@ class Article < ActiveRecord::Base | @@ -29,9 +29,14 @@ class Article < ActiveRecord::Base | ||
29 | def initialize(*params) | 29 | def initialize(*params) |
30 | super | 30 | super |
31 | 31 | ||
32 | - if !params.blank? && params.first.has_key?(:profile) && !params.first[:profile].blank? | ||
33 | - profile = params.first[:profile] | ||
34 | - self.published = false unless profile.public? | 32 | + if !params.blank? |
33 | + if params.first.has_key?(:profile) && !params.first[:profile].blank? | ||
34 | + profile = params.first[:profile] | ||
35 | + self.published = false unless profile.public_profile | ||
36 | + end | ||
37 | + | ||
38 | + self.published = params.first["published"] if params.first.has_key?("published") | ||
39 | + self.published = params.first[:published] if params.first.has_key?(:published) | ||
35 | end | 40 | end |
36 | 41 | ||
37 | end | 42 | end |
app/models/rss_feed.rb
@@ -14,7 +14,7 @@ class RssFeed < Article | @@ -14,7 +14,7 @@ class RssFeed < Article | ||
14 | 14 | ||
15 | # store setting in body | 15 | # store setting in body |
16 | serialize :body, Hash | 16 | serialize :body, Hash |
17 | - | 17 | + |
18 | def body | 18 | def body |
19 | self[:body] ||= {} | 19 | self[:body] ||= {} |
20 | end | 20 | end |
@@ -89,6 +89,14 @@ class RssFeed < Article | @@ -89,6 +89,14 @@ class RssFeed < Article | ||
89 | ) | 89 | ) |
90 | end | 90 | end |
91 | 91 | ||
92 | + def published? | ||
93 | + if self.parent | ||
94 | + self.parent.published? | ||
95 | + else | ||
96 | + self.published | ||
97 | + end | ||
98 | + end | ||
99 | + | ||
92 | def self.short_description | 100 | def self.short_description |
93 | _('RSS Feed') | 101 | _('RSS Feed') |
94 | end | 102 | end |
test/unit/community_test.rb
@@ -39,7 +39,9 @@ class CommunityTest < ActiveSupport::TestCase | @@ -39,7 +39,9 @@ class CommunityTest < ActiveSupport::TestCase | ||
39 | community = create(Community, :environment => Environment.default, :name => 'my new community') | 39 | community = create(Community, :environment => Environment.default, :name => 'my new community') |
40 | 40 | ||
41 | assert_kind_of Blog, community.articles.find_by_path(blog.path) | 41 | assert_kind_of Blog, community.articles.find_by_path(blog.path) |
42 | + assert community.articles.find_by_path(blog.path).published? | ||
42 | assert_kind_of RssFeed, community.articles.find_by_path(blog.feed.path) | 43 | assert_kind_of RssFeed, community.articles.find_by_path(blog.feed.path) |
44 | + assert community.articles.find_by_path(blog.feed.path).published? | ||
43 | end | 45 | end |
44 | 46 | ||
45 | should 'have contact_person' do | 47 | should 'have contact_person' do |
test/unit/person_test.rb
@@ -181,7 +181,9 @@ class PersonTest < ActiveSupport::TestCase | @@ -181,7 +181,9 @@ class PersonTest < ActiveSupport::TestCase | ||
181 | person = create(User).person | 181 | person = create(User).person |
182 | 182 | ||
183 | assert_kind_of Blog, person.articles.find_by_path(blog.path) | 183 | assert_kind_of Blog, person.articles.find_by_path(blog.path) |
184 | + assert person.articles.find_by_path(blog.path).published? | ||
184 | assert_kind_of RssFeed, person.articles.find_by_path(blog.feed.path) | 185 | assert_kind_of RssFeed, person.articles.find_by_path(blog.feed.path) |
186 | + assert person.articles.find_by_path(blog.feed.path).published? | ||
185 | end | 187 | end |
186 | 188 | ||
187 | should 'create a default set of blocks' do | 189 | should 'create a default set of blocks' do |
test/unit/rss_feed_test.rb
@@ -262,4 +262,31 @@ class RssFeedTest < ActiveSupport::TestCase | @@ -262,4 +262,31 @@ class RssFeedTest < ActiveSupport::TestCase | ||
262 | assert_equal [es_post], blog.feed.fetch_articles | 262 | assert_equal [es_post], blog.feed.fetch_articles |
263 | end | 263 | end |
264 | 264 | ||
265 | + should 'a feed have the same privacy of its parent' do | ||
266 | + profile = create_user('testuser').person | ||
267 | + blog = create(Blog, :name => 'blog-test', :profile => profile) | ||
268 | + feed = blog.feed | ||
269 | + | ||
270 | + assert blog.published? | ||
271 | + assert feed.published? | ||
272 | + | ||
273 | + feed.published = false | ||
274 | + feed.save | ||
275 | + | ||
276 | + assert blog.published? | ||
277 | + assert feed.published? | ||
278 | + | ||
279 | + blog.published = false | ||
280 | + blog.save | ||
281 | + feed.reload | ||
282 | + | ||
283 | + assert !blog.published? | ||
284 | + assert !feed.published? | ||
285 | + | ||
286 | + feed.published = true | ||
287 | + feed.save | ||
288 | + | ||
289 | + assert !blog.published? | ||
290 | + assert !feed.published? | ||
291 | + end | ||
265 | end | 292 | end |