mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-24 11:52:34 +01:00
Added clone of entity permissions on chapter/book promotion
This commit is contained in:
parent
d676e1e824
commit
90ec40691a
@ -121,6 +121,18 @@ class Cloner
|
||||
return $inputData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the permission settings from the source entity to the target entity.
|
||||
*/
|
||||
public function copyEntityPermissions(Entity $sourceEntity, Entity $targetEntity): void
|
||||
{
|
||||
$targetEntity->restricted = $sourceEntity->restricted;
|
||||
$permissions = $sourceEntity->permissions()->get(['role_id', 'action'])->toArray();
|
||||
$targetEntity->permissions()->delete();
|
||||
$targetEntity->permissions()->createMany($permissions);
|
||||
$targetEntity->rebuildPermissions();
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert an image instance to an UploadedFile instance to mimic
|
||||
* a file being uploaded.
|
||||
|
@ -16,19 +16,13 @@ class HierarchyTransformer
|
||||
protected Cloner $cloner;
|
||||
protected TrashCan $trashCan;
|
||||
|
||||
// TODO - Test setting book cover image from API
|
||||
// Ensure we can update without resetting image accidentally
|
||||
// Ensure api docs correct.
|
||||
// TODO - As above but for shelves.
|
||||
|
||||
public function transformChapterToBook(Chapter $chapter): Book
|
||||
{
|
||||
// TODO - Check permissions before call
|
||||
// Permissions: edit-chapter, delete-chapter, create-book
|
||||
$inputData = $this->cloner->entityToInputData($chapter);
|
||||
$book = $this->bookRepo->create($inputData);
|
||||
|
||||
// TODO - Copy permissions
|
||||
$this->cloner->copyEntityPermissions($chapter, $book);
|
||||
|
||||
/** @var Page $page */
|
||||
foreach ($chapter->pages as $page) {
|
||||
@ -48,8 +42,7 @@ class HierarchyTransformer
|
||||
// Permissions: edit-book, delete-book, create-shelf
|
||||
$inputData = $this->cloner->entityToInputData($book);
|
||||
$shelf = $this->shelfRepo->create($inputData, []);
|
||||
|
||||
// TODO - Copy permissions?
|
||||
$this->cloner->copyEntityPermissions($book, $shelf);
|
||||
|
||||
$shelfBookSyncData = [];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user