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.
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) {
// 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 = [];