Allowed page includes on custom home

For #2279
Old hold-over for when include content permissions were handled less
delicately.
This commit is contained in:
Dan Brown 2021-10-04 11:26:26 +01:00
parent 505d7e604e
commit d3a9645161
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
3 changed files with 23 additions and 1 deletions

View File

@ -316,6 +316,7 @@ class PageContent
} }
// Find page and skip this if page not found // Find page and skip this if page not found
/** @var ?Page $matchedPage */
$matchedPage = Page::visible()->find($pageId); $matchedPage = Page::visible()->find($pageId);
if ($matchedPage === null) { if ($matchedPage === null) {
$html = str_replace($fullMatch, '', $html); $html = str_replace($fullMatch, '', $html);

View File

@ -96,9 +96,10 @@ class HomeController extends Controller
if ($homepageOption === 'page') { if ($homepageOption === 'page') {
$homepageSetting = setting('app-homepage', '0:'); $homepageSetting = setting('app-homepage', '0:');
$id = intval(explode(':', $homepageSetting)[0]); $id = intval(explode(':', $homepageSetting)[0]);
/** @var Page $customHomepage */
$customHomepage = Page::query()->where('draft', '=', false)->findOrFail($id); $customHomepage = Page::query()->where('draft', '=', false)->findOrFail($id);
$pageContent = new PageContent($customHomepage); $pageContent = new PageContent($customHomepage);
$customHomepage->html = $pageContent->render(true); $customHomepage->html = $pageContent->render(false);
return view('home.specific-page', array_merge($commonData, ['customHomepage' => $customHomepage])); return view('home.specific-page', array_merge($commonData, ['customHomepage' => $customHomepage]));
} }

View File

@ -5,6 +5,7 @@ namespace Tests;
use BookStack\Auth\Role; use BookStack\Auth\Role;
use BookStack\Auth\User; use BookStack\Auth\User;
use BookStack\Entities\Models\Bookshelf; use BookStack\Entities\Models\Bookshelf;
use BookStack\Entities\Models\Page;
class HomepageTest extends TestCase class HomepageTest extends TestCase
{ {
@ -78,6 +79,25 @@ class HomepageTest extends TestCase
$pageDeleteReq->assertSessionMissing('error'); $pageDeleteReq->assertSessionMissing('error');
} }
public function test_custom_homepage_renders_includes()
{
$this->asEditor();
/** @var Page $included */
$included = Page::query()->first();
$content = str_repeat('This is the body content of my custom homepage.', 20);
$included->html = $content;
$included->save();
$name = 'My custom homepage';
$customPage = $this->newPage(['name' => $name, 'html' => '{{@' . $included->id . '}}']);
$this->setSettings(['app-homepage' => $customPage->id]);
$this->setSettings(['app-homepage-type' => 'page']);
$homeVisit = $this->get('/');
$homeVisit->assertSee($name);
$homeVisit->assertSee($content);
}
public function test_set_book_homepage() public function test_set_book_homepage()
{ {
$editor = $this->getEditor(); $editor = $this->getEditor();