namespace BookStack\Http\Controllers;
+use BookStack\Auth\Permissions\EntityPermission;
+use BookStack\Auth\Permissions\PermissionFormData;
+use BookStack\Auth\Role;
use BookStack\Entities\Models\Book;
use BookStack\Entities\Models\Bookshelf;
use BookStack\Entities\Models\Chapter;
$page = Page::getBySlugs($bookSlug, $pageSlug);
$this->checkOwnablePermission('restrictions-manage', $page);
+ $this->setPageTitle(trans('entities.pages_permissions'));
return view('pages.permissions', [
'page' => $page,
+ 'data' => new PermissionFormData($page),
]);
}
$chapter = Chapter::getBySlugs($bookSlug, $chapterSlug);
$this->checkOwnablePermission('restrictions-manage', $chapter);
+ $this->setPageTitle(trans('entities.chapters_permissions'));
return view('chapters.permissions', [
'chapter' => $chapter,
+ 'data' => new PermissionFormData($chapter),
]);
}
$book = Book::getBySlug($slug);
$this->checkOwnablePermission('restrictions-manage', $book);
+ $this->setPageTitle(trans('entities.books_permissions'));
return view('books.permissions', [
'book' => $book,
+ 'data' => new PermissionFormData($book),
]);
}
$shelf = Bookshelf::getBySlug($slug);
$this->checkOwnablePermission('restrictions-manage', $shelf);
+ $this->setPageTitle(trans('entities.shelves_permissions'));
return view('shelves.permissions', [
'shelf' => $shelf,
+ 'data' => new PermissionFormData($shelf),
]);
}
return redirect($shelf->getUrl());
}
+
+ /**
+ * Get an empty entity permissions form row for the given role.
+ */
+ public function formRowForRole(string $entityType, string $roleId)
+ {
+ $this->checkPermissionOr('restrictions-manage-all', fn() => userCan('restrictions-manage-own'));
+
+ $role = Role::query()->findOrFail($roleId);
+
+ return view('form.entity-permissions-row', [
+ 'role' => $role,
+ 'permission' => new EntityPermission(),
+ 'entityType' => $entityType,
+ 'inheriting' => false,
+ ]);
+ }
}