From b6ba567ee5c947358fee47adaa6b4f931b000789 Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Fri, 1 Jun 2018 13:42:23 +1200 Subject: [PATCH] FIX Do not make subsite based file permission decisions when no subsite is set --- src/Extensions/FileSubsites.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Extensions/FileSubsites.php b/src/Extensions/FileSubsites.php index e0e5a3b..37a9522 100644 --- a/src/Extensions/FileSubsites.php +++ b/src/Extensions/FileSubsites.php @@ -2,6 +2,7 @@ namespace SilverStripe\Subsites\Extensions; +use SilverStripe\Assets\File; use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataQuery; use SilverStripe\ORM\Queries\SQLSelect; @@ -106,16 +107,21 @@ class FileSubsites extends DataExtension public function canEdit($member = null) { + // Opt out of making opinions if no subsite ID is set yet + if (!$this->owner->SubsiteID) { + return null; + } + // Check the CMS_ACCESS_SecurityAdmin privileges on the subsite that owns this group $subsiteID = SubsiteState::singleton()->getSubsiteId(); if ($subsiteID && $subsiteID == $this->owner->SubsiteID) { return true; } - return SubsiteState::singleton()->withState(function ($newState) { + return SubsiteState::singleton()->withState(function (SubsiteState $newState) use ($member) { $newState->setSubsiteId($this->owner->SubsiteID); - return Permission::check(['CMS_ACCESS_AssetAdmin', 'CMS_ACCESS_LeftAndMain']); + return $this->owner->getPermissionChecker()->canEdit($this->owner->ID, $member); }); }