1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-25 15:51:37 +02:00

Fix issue processwire/processwire-issues#631 where page-edit-lang-[name] permissions could prevent intended "addable" permission on templates.

This commit is contained in:
Ryan Cramer
2018-07-18 06:48:59 -04:00
parent b6ec6cd679
commit b439a4488f

View File

@@ -783,7 +783,8 @@ class PagePermissions extends WireData implements Module {
$page = $event->object;
$user = $this->wire('user');
$addable = false;
$_ADDABLE = false; // if we really mean it
$addPage = null;
$_ADDABLE = false; // if we really mean it (as in, do not perform secondary checks)
$superuser = $user->isSuperuser();
if($page->template->noChildren) {
@@ -808,7 +809,8 @@ class PagePermissions extends WireData implements Module {
// check if a $page is provided as the first argument for additional access checking
if($addable) {
$addPage = $event->arguments(0);
if($addPage && $addPage instanceof Page && $addPage->template && $page->template) {
if(!$addPage || !$addPage instanceof Page || !$addPage->id) $addPage = null;
if($addPage && $addPage->template && $page->template) {
if(count($page->template->childTemplates) && !in_array($addPage->template->id, $page->template->childTemplates)) {
$addable = false;
}
@@ -816,8 +818,8 @@ class PagePermissions extends WireData implements Module {
}
// check additional permissions if in multi-language environment
if($addable && !$_ADDABLE && $this->wire('languages')) {
if(!$this->hasPageEditLangDefault($user, $page) || !$this->hasPageEditLangNone($user, $page)) {
if($addable && !$_ADDABLE && $addPage && $this->wire('languages')) {
if(!$this->hasPageEditLangDefault($user, $addPage) || !$this->hasPageEditLangNone($user, $addPage)) {
// if user can't edit default language, or can't edit non-multi-language fields, then deny add access
$addable = false;
}