Shelf permissions: reverted create removal

Reverted work in 847a57a49a.
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
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

View File

@ -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.
}
/**

View File

@ -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.',

View File

@ -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

View File

@ -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>

View File

@ -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()