/**
* @param DBFarm $dbFarm
* @param string $permissionId
* @return bool
*/
protected function isFarmAllowed(DBFarm $dbFarm = null, $permissionId = null)
{
$acl = \Scalr::getContainer()->acl;
if (is_null($dbFarm)) {
return $acl->isUserAllowedByEnvironment($this->user, $this->Environment, \Scalr\Acl\Acl::RESOURCE_FARMS, $permissionId) || $acl->isUserAllowedByEnvironment($this->user, $this->Environment, \Scalr\Acl\Acl::RESOURCE_TEAM_FARMS, $permissionId) || $acl->isUserAllowedByEnvironment($this->user, $this->Environment, \Scalr\Acl\Acl::RESOURCE_OWN_FARMS, $permissionId);
} else {
if (!$dbFarm instanceof DBFarm) {
throw new \InvalidArgumentException(sprintf('First argument should be instance of DBFarm or null'));
}
$result = $acl->isUserAllowedByEnvironment($this->user, $this->Environment, \Scalr\Acl\Acl::RESOURCE_FARMS, $permissionId);
if (!$result && $dbFarm->teamId && $this->user->isInTeam($dbFarm->teamId)) {
$result = $acl->isUserAllowedByEnvironment($this->user, $this->Environment, \Scalr\Acl\Acl::RESOURCE_TEAM_FARMS, $permissionId);
}
if (!$result && $dbFarm->createdByUserId && $this->user->id == $dbFarm->createdByUserId) {
$result = $acl->isUserAllowedByEnvironment($this->user, $this->Environment, \Scalr\Acl\Acl::RESOURCE_OWN_FARMS, $permissionId);
}
return $result;
}
}