public function match(SimplifiedRequest $request)
{
$this->request = $request;
if (isset($this->siteAccess)) {
return $this->siteAccess;
}
$siteAccessClass = $this->siteAccessClass;
$this->siteAccess = new $siteAccessClass();
// Request header always have precedence
// Note: request headers are always in lower cased.
if (!empty($request->headers['x-siteaccess'])) {
$siteaccessName = $request->headers['x-siteaccess'][0];
if (!isset($this->siteAccessList[$siteaccessName])) {
unset($this->siteAccess);
throw new InvalidSiteAccessException($siteaccessName, array_keys($this->siteAccessList), 'X-Siteaccess request header');
}
$this->siteAccess->name = $siteaccessName;
$this->siteAccess->matchingType = 'header';
return $this->siteAccess;
}
// Then check environment variable
$siteaccessEnvName = getenv('EZPUBLISH_SITEACCESS');
if ($siteaccessEnvName !== false) {
if (!isset($this->siteAccessList[$siteaccessEnvName])) {
unset($this->siteAccess);
throw new InvalidSiteAccessException($siteaccessEnvName, array_keys($this->siteAccessList), 'EZPUBLISH_SITEACCESS Environment variable');
}
$this->siteAccess->name = $siteaccessEnvName;
$this->siteAccess->matchingType = 'env';
return $this->siteAccess;
}
return $this->doMatch($request);
}