|
|
|
@ -34,7 +34,7 @@ class PublicAuth implements BackendInterface { |
|
|
|
|
*/ |
|
|
|
|
public function __construct() { |
|
|
|
|
$this->publicURLs = [ |
|
|
|
|
'public-calendars/' |
|
|
|
|
'public-calendars' |
|
|
|
|
]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -67,12 +67,8 @@ class PublicAuth implements BackendInterface { |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
function check(RequestInterface $request, ResponseInterface $response) { |
|
|
|
|
$url = $request->getPath(); |
|
|
|
|
$matchingUrls = array_filter($this->publicURLs, function ($publicUrl) use ($url) { |
|
|
|
|
return strpos($url, $publicUrl, 0) === 0; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
if ($matchingUrls) { |
|
|
|
|
if ($this->isRequestPublic($request)) { |
|
|
|
|
return [true, "principals/system/public"]; |
|
|
|
|
} |
|
|
|
|
return [false, "No public access to this resource."]; |
|
|
|
@ -83,4 +79,20 @@ class PublicAuth implements BackendInterface { |
|
|
|
|
*/ |
|
|
|
|
function challenge(RequestInterface $request, ResponseInterface $response) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param RequestInterface $request |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
private function isRequestPublic(RequestInterface $request) { |
|
|
|
|
$params = $request->getQueryParameters(); |
|
|
|
|
if (isset($params['sabreAction']) && $params['sabreAction'] == 'asset') { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
$url = $request->getPath(); |
|
|
|
|
$matchingUrls = array_filter($this->publicURLs, function ($publicUrl) use ($url) { |
|
|
|
|
return strpos($url, $publicUrl, 0) === 0; |
|
|
|
|
}); |
|
|
|
|
return $matchingUrls; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|