From fe4282169b9d2e4f35e1107d87e263f1afc2a4a1 Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Mon, 28 Aug 2023 12:04:13 +1200 Subject: [PATCH] FIX Set extraCodes to false for CMSProfileController --- src/Extensions/LeftAndMainSubsites.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Extensions/LeftAndMainSubsites.php b/src/Extensions/LeftAndMainSubsites.php index ce12d85..cbb87a4 100644 --- a/src/Extensions/LeftAndMainSubsites.php +++ b/src/Extensions/LeftAndMainSubsites.php @@ -4,6 +4,7 @@ namespace SilverStripe\Subsites\Extensions; use SilverStripe\Admin\AdminRootController; use SilverStripe\Admin\CMSMenu; +use SilverStripe\Admin\CMSProfileController; use SilverStripe\Admin\LeftAndMainExtension; use SilverStripe\CMS\Controllers\CMSPagesController; use SilverStripe\CMS\Model\SiteTree; @@ -88,12 +89,18 @@ class LeftAndMainSubsites extends LeftAndMainExtension // Collect permissions - honour the LeftAndMain::required_permission_codes, current model requires // us to check if the user satisfies ALL permissions. Code partly copied from LeftAndMain::canView. $codes = []; - $extraCodes = Config::inst()->get(get_class($this->owner), 'required_permission_codes'); + $ownerClass = get_class($this->owner); + $extraCodes = Config::inst()->get($ownerClass, 'required_permission_codes'); + if ($ownerClass === CMSProfileController::class) { + // This matches the behaviour before merging + // https://github.com/silverstripe/silverstripe-admin/pull/1027 + $extraCodes = false; + } if ($extraCodes !== false) { if ($extraCodes) { $codes = array_merge($codes, (array)$extraCodes); } else { - $codes[] = sprintf('CMS_ACCESS_%s', get_class($this->owner)); + $codes[] = sprintf('CMS_ACCESS_%s', $ownerClass); } } else { // Check overriden - all subsites accessible.