Skip to content

Commit

Permalink
Merge pull request #132 from mateusz/session-can-edit
Browse files Browse the repository at this point in the history
Make canEdit fall back to session if the object's SubsiteID not there.
  • Loading branch information
halkyon committed Jan 14, 2014
2 parents e5b72df + 82159e3 commit 4e20228
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions code/extensions/SiteTreeSubsites.php
Expand Up @@ -127,13 +127,25 @@ function alternateSiteConfig() {
* @return boolean
*/
function canEdit($member = null) {

if(!$member) $member = Member::currentUser();

// Find the sites that this user has access to
$goodSites = Subsite::accessible_sites('CMS_ACCESS_CMSMain',true,'all',$member)->column('ID');


if (!is_null($this->owner->SubsiteID)) {
$subsiteID = $this->owner->SubsiteID;
} else {
// The relationships might not be available during the record creation when using a GridField.
// In this case the related objects will have empty fields, and SubsiteID will not be available.
//
// We do the second best: fetch the likely SubsiteID from the session. The drawback is this might
// make it possible to force relations to point to other (forbidden) subsites.
$subsiteID = Subsite::currentSubsiteID();
}

// Return true if they have access to this object's site
if(!(in_array(0, $goodSites) || in_array($this->owner->SubsiteID, $goodSites))) return false;
if(!(in_array(0, $goodSites) || in_array($subsiteID, $goodSites))) return false;
}

/**
Expand Down

0 comments on commit 4e20228

Please sign in to comment.