From ae834050f58ab8dd963ac390c11e48a674b2bd8b Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Wed, 12 Jul 2023 22:04:05 +0100 Subject: [PATCH] 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 #4375 --- ...remove_bookshelf_create_entity_permissions.php | 7 ++++--- lang/en/entities.php | 1 + .../views/form/entity-permissions-row.blade.php | 4 ++-- resources/views/form/entity-permissions.blade.php | 15 ++++++++++++--- tests/Permissions/EntityPermissionsTest.php | 5 +++-- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/database/migrations/2023_06_25_181952_remove_bookshelf_create_entity_permissions.php b/database/migrations/2023_06_25_181952_remove_bookshelf_create_entity_permissions.php index efb65972b..b5dcaee75 100644 --- a/database/migrations/2023_06_25_181952_remove_bookshelf_create_entity_permissions.php +++ b/database/migrations/2023_06_25_181952_remove_bookshelf_create_entity_permissions.php @@ -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. } /** diff --git a/lang/en/entities.php b/lang/en/entities.php index 8cd7e925f..4fb043aa9 100644 --- a/lang/en/entities.php +++ b/lang/en/entities.php @@ -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.', diff --git a/resources/views/form/entity-permissions-row.blade.php b/resources/views/form/entity-permissions-row.blade.php index 5c2e86741..a47027d79 100644 --- a/resources/views/form/entity-permissions-row.blade.php +++ b/resources/views/form/entity-permissions-row.blade.php @@ -44,11 +44,11 @@ $inheriting - Boolean if the current row should be marked as inheriting default 'disabled' => $inheriting ]) - @if($entityType !== 'page' && $entityType !== 'bookshelf') + @if($entityType !== 'page')
@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 diff --git a/resources/views/form/entity-permissions.blade.php b/resources/views/form/entity-permissions.blade.php index 8eddac8de..cf5314ad4 100644 --- a/resources/views/form/entity-permissions.blade.php +++ b/resources/views/form/entity-permissions.blade.php @@ -70,8 +70,17 @@
-
- {{ trans('common.cancel') }} - +
+
+ @if($model instanceof \BookStack\Entities\Models\Bookshelf) +

+ * {{ trans('entities.shelves_permissions_create') }} +

+ @endif +
+
+ {{ trans('common.cancel') }} + +
\ No newline at end of file diff --git a/tests/Permissions/EntityPermissionsTest.php b/tests/Permissions/EntityPermissionsTest.php index 035546593..6ea0257b8 100644 --- a/tests/Permissions/EntityPermissionsTest.php +++ b/tests/Permissions/EntityPermissionsTest.php @@ -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()