Shelf permissions: reverted create removal

Reverted work in 847a57a49aef525d2f7f429a30e58a34cf69d43f.
Left test in but updated to new expectation.
Left migration in but removed content to prevent new pre-v23.06
upgraders loosing shelf create permission status.
Added note to permission to describe use-case.

For 
This commit is contained in:
Dan Brown 2023-07-12 22:04:05 +01:00
parent a83150131a
commit ae834050f5
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
5 changed files with 22 additions and 10 deletions

@ -12,9 +12,10 @@ return new class extends Migration
*/
public function up()
{
DB::table('entity_permissions')
->where('entity_type', '=', 'bookshelf')
->update(['create' => 0]);
// Note: v23.06.2
// Migration removed since change to remove bookshelf create permissions was reverted.
// Create permissions were removed as incorrectly thought to be unused, but they did
// have a use via shelf permission copy-down to books.
}
/**

@ -106,6 +106,7 @@ return [
'shelves_permissions_updated' => 'Shelf Permissions Updated',
'shelves_permissions_active' => 'Shelf Permissions Active',
'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
'shelves_copy_permissions' => 'Copy Permissions',
'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',

@ -44,11 +44,11 @@ $inheriting - Boolean if the current row should be marked as inheriting default
'disabled' => $inheriting
])
</div>
@if($entityType !== 'page' && $entityType !== 'bookshelf')
@if($entityType !== 'page')
<div class="px-l">
@include('form.custom-checkbox', [
'name' => 'permissions[' . $role->id . '][create]',
'label' => trans('common.create'),
'label' => trans('common.create') . ($entityType === 'bookshelf' ? ' *' : ''),
'value' => 'true',
'checked' => $permission->create,
'disabled' => $inheriting

@ -70,8 +70,17 @@
<hr class="mb-m">
<div class="text-right">
<a href="{{ $model->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
<button type="submit" class="button">{{ trans('entities.permissions_save') }}</button>
<div class="flex-container-row justify-space-between gap-m wrap">
<div class="flex min-width-m">
@if($model instanceof \BookStack\Entities\Models\Bookshelf)
<p class="small text-muted mb-none">
* {{ trans('entities.shelves_permissions_create') }}
</p>
@endif
</div>
<div class="text-right">
<a href="{{ $model->getUrl() }}" class="button outline">{{ trans('common.cancel') }}</a>
<button type="submit" class="button">{{ trans('entities.permissions_save') }}</button>
</div>
</div>
</form>

@ -413,13 +413,14 @@ class EntityPermissionsTest extends TestCase
$this->entityRestrictionFormTest(Page::class, 'Page Permissions', 'delete', '2');
}
public function test_shelf_create_permission_not_visible()
public function test_shelf_create_permission_visible_with_notice()
{
$shelf = $this->entities->shelf();
$resp = $this->asAdmin()->get($shelf->getUrl('/permissions'));
$html = $this->withHtml($resp);
$html->assertElementNotExists('input[name$="[create]"]');
$html->assertElementExists('input[name$="[create]"]');
$resp->assertSee('Shelf create permissions are only used for copying permissions to child books using the action below.');
}
public function test_restricted_pages_not_visible_in_book_navigation_on_pages()