1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-17 12:10:45 +02:00
This commit is contained in:
Ryan Cramer
2022-01-21 13:23:10 -05:00
parent 39f9cf42f2
commit 5e11b28587

View File

@@ -746,13 +746,21 @@ class PagesLoader extends Wire {
if($page && !$page->viewable(false)) { if($page && !$page->viewable(false)) {
// page found but is not viewable, check if include mode was specified and would allow the page // page found but is not viewable, check if include mode was specified and would allow the page
$selectors = $items->getSelectors(); $selectors = $items->getSelectors();
$include = $selectors ? $selectors->getSelectorByField('include') : null; if($selectors) {
$include = $selectors->getSelectorByField('include');
$checkAccess = $selectors->getSelectorByField('check_access');
if(!$checkAccess) $checkAccess = $selectors->getSelectorByField('checkAccess');
$checkAccess = $checkAccess ? (bool) $checkAccess->value() : true;
} else {
$include = null;
$checkAccess = true;
}
if(!$include) { if(!$include) {
// there was no “include=” selector present // there was no “include=” selector present
$page = null; if($checkAccess === true) $page = null;
} else if($include->value() === 'all') { } else if($include->value() === 'all') {
// allow $page to pass through with include=all mode // allow $page to pass through with include=all mode
} else if($include->value() === 'unpublished' && $page->hasStatus(Page::statusUnpublished)) { } else if($include->value() === 'unpublished' && $page->hasStatus(Page::statusUnpublished) && $checkAccess) {
// check if user would have access without unpublished status // check if user would have access without unpublished status
$status = $page->status; $status = $page->status;
$page->setQuietly('status', $status & ~Page::statusUnpublished); $page->setQuietly('status', $status & ~Page::statusUnpublished);
@@ -760,7 +768,7 @@ class PagesLoader extends Wire {
$page->setQuietly('status', $status); // restore $page->setQuietly('status', $status); // restore
if(!$viewable) $page = null; if(!$viewable) $page = null;
} else { } else {
$page = null; if($checkAccess === true) $page = null;
} }
} }