/** * @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; } }