Prevent empty-state actions visible without permission.

Fixes #411
This commit is contained in:
Dan Brown 2017-07-02 15:59:40 +01:00
parent cbff801aec
commit 4db2c274e2
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
3 changed files with 35 additions and 0 deletions

View File

@ -72,9 +72,15 @@
@else
<p class="text-muted">{{ trans('entities.books_empty_contents') }}</p>
<p>
@if(userCan('page-create', $book))
<a href="{{ $book->getUrl('/page/create') }}" class="text-page"><i class="zmdi zmdi-file-text"></i>{{ trans('entities.books_empty_create_page') }}</a>
@endif
@if(userCan('page-create', $book) && userCan('chapter-create', $book))
&nbsp;&nbsp;<em class="text-muted">-{{ trans('entities.books_empty_or') }}-</em>&nbsp;&nbsp;&nbsp;
@endif
@if(userCan('chapter-create', $book))
<a href="{{ $book->getUrl('/chapter/create') }}" class="text-chapter"><i class="zmdi zmdi-collection-bookmark"></i>{{ trans('entities.books_empty_add_chapter') }}</a>
@endif
</p>
<hr>
@endif

View File

@ -1,5 +1,6 @@
<?php namespace Tests;
use BookStack\Entity;
use BookStack\Role;
use BookStack\Services\PermissionService;
use Illuminate\Contracts\Console\Kernel;
@ -117,6 +118,16 @@ abstract class BrowserKitTest extends TestCase
];
}
/**
* Helper for updating entity permissions.
* @param Entity $entity
*/
protected function updateEntityPermissions(Entity $entity)
{
$restrictionService = $this->app[PermissionService::class];
$restrictionService->buildJointPermissionsForEntity($entity);
}
/**
* Quick way to create a new user
* @param array $attributes

View File

@ -639,4 +639,22 @@ class RolesTest extends BrowserKitTest
$this->actingAs($viewer)->visit($page->getUrl())->assertResponseStatus(404);
}
public function test_empty_state_actions_not_visible_without_permission()
{
$admin = $this->getAdmin();
// Book links
$book = factory(\BookStack\Book::class)->create(['created_by' => $admin->id, 'updated_by' => $admin->id]);
$this->updateEntityPermissions($book);
$this->actingAs($this->getViewer())->visit($book->getUrl())
->dontSee('Create a new page')
->dontSee('Add a chapter');
// Chapter links
$chapter = factory(\BookStack\Chapter::class)->create(['created_by' => $admin->id, 'updated_by' => $admin->id, 'book_id' => $book->id]);
$this->updateEntityPermissions($chapter);
$this->actingAs($this->getViewer())->visit($chapter->getUrl())
->dontSee('Create a new page')
->dontSee('Sort the current book');
}
}