Commit a6aca8e122e9b8af60d5262591a9b41ccd2a3de4
Exists in
master
and in
27 other branches
Merge branch 'block_permission' into 'master'
Block permission Add privacy of block only to members in a community Add privacy of block only to friends in person. The privacies were added in the block edition. See merge request !418
Showing
2 changed files
with
48 additions
and
1 deletions
Show diff stats
app/models/block.rb
... | ... | @@ -64,7 +64,7 @@ class Block < ActiveRecord::Base |
64 | 64 | end |
65 | 65 | |
66 | 66 | def display_to_user?(user) |
67 | - display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') | |
67 | + display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') || (user && display_user == 'followers' && user.follows?(owner)) | |
68 | 68 | end |
69 | 69 | |
70 | 70 | def display_always(context) |
... | ... | @@ -224,6 +224,7 @@ class Block < ActiveRecord::Base |
224 | 224 | 'all' => _('All users'), |
225 | 225 | 'logged' => _('Logged'), |
226 | 226 | 'not_logged' => _('Not logged'), |
227 | + 'followers' => owner.organization? ? _('Members') : _('Friends') | |
227 | 228 | } |
228 | 229 | end |
229 | 230 | ... | ... |
test/unit/block_test.rb
... | ... | @@ -284,4 +284,50 @@ class BlockTest < ActiveSupport::TestCase |
284 | 284 | assert_equal block.cache_key('en'), block.cache_key('en', person) |
285 | 285 | end |
286 | 286 | |
287 | + should 'display block to members of community for display_user = members' do | |
288 | + community = fast_create(Community) | |
289 | + user = create_user('testinguser') | |
290 | + community.add_member(user.person) | |
291 | + | |
292 | + box = fast_create(Box, :owner_id => community.id, :owner_type => 'Community') | |
293 | + block = create(Block, :box_id => box.id) | |
294 | + block.display_user = 'followers' | |
295 | + block.save! | |
296 | + assert block.display_to_user?(user.person) | |
297 | + end | |
298 | + | |
299 | + should 'do not display block to non members of community for display_user = members' do | |
300 | + community = fast_create(Community) | |
301 | + user = create_user('testinguser') | |
302 | + | |
303 | + box = fast_create(Box, :owner_id => community.id, :owner_type => 'Community') | |
304 | + block = create(Block, :box_id => box.id) | |
305 | + block.display_user = 'followers' | |
306 | + block.save! | |
307 | + assert !block.display_to_user?(user.person) | |
308 | + end | |
309 | + | |
310 | + should 'display block to friends of person for display_user = friends' do | |
311 | + person = create_user('person_one').person | |
312 | + person_friend = create_user('person_friend').person | |
313 | + | |
314 | + person.add_friend(person_friend) | |
315 | + | |
316 | + box = fast_create(Box, :owner_id => person.id, :owner_type => 'Person') | |
317 | + block = create(Block, :box_id => box.id) | |
318 | + block.display_user = 'followers' | |
319 | + block.save! | |
320 | + assert block.display_to_user?(person_friend) | |
321 | + end | |
322 | + | |
323 | + should 'do not display block to non friends of person for display_user = friends' do | |
324 | + person = create_user('person_one').person | |
325 | + person_friend = create_user('person_friend').person | |
326 | + | |
327 | + box = fast_create(Box, :owner_id => person.id, :owner_type => 'Person') | |
328 | + block = create(Block, :box_id => box.id) | |
329 | + block.display_user = 'followers' | |
330 | + block.save! | |
331 | + assert !block.display_to_user?(person_friend) | |
332 | + end | |
287 | 333 | end | ... | ... |