Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
15 / 15 |
SharingCheckMiddleware | |
100.00% |
1 / 1 |
|
100.00% |
3 / 3 |
7 | |
100.00% |
15 / 15 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
beforeController | |
100.00% |
1 / 1 |
4 | |
100.00% |
7 / 7 |
|||
isSharingEnabled | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
<?php | |
/** | |
* Gallery | |
* | |
* This file is licensed under the Affero General Public License version 3 or | |
* later. See the COPYING file. | |
* | |
* @author Lukas Reschke <lukas@owncloud.com> | |
* @author Olivier Paroz <galleryapps@oparoz.com> | |
* | |
* @copyright Lukas Reschke 2014-2015 | |
* @copyright Olivier Paroz 2014-2016 | |
*/ | |
namespace OCA\Gallery\Middleware; | |
use OCP\IConfig; | |
use OCP\IRequest; | |
use OCP\ILogger; | |
use OCP\IURLGenerator; | |
use OCP\AppFramework\Http; | |
use OCP\AppFramework\Utility\IControllerMethodReflector; | |
/** | |
* Checks whether the "sharing check" is enabled | |
* | |
* @package OCA\Gallery\SharingCheckMiddleware | |
*/ | |
class SharingCheckMiddleware extends CheckMiddleware { | |
/** @var IConfig */ | |
private $config; | |
/** @var IControllerMethodReflector */ | |
protected $reflector; | |
/*** | |
* Constructor | |
* | |
* @param string $appName | |
* @param IRequest $request | |
* @param IConfig $appConfig | |
* @param IControllerMethodReflector $reflector | |
* @param IURLGenerator $urlGenerator | |
* @param ILogger $logger | |
*/ | |
public function __construct( | |
$appName, | |
IRequest $request, | |
IConfig $appConfig, | |
IControllerMethodReflector $reflector, | |
IURLGenerator $urlGenerator, | |
ILogger $logger | |
) { | |
parent::__construct( | |
$appName, | |
$request, | |
$urlGenerator, | |
$logger | |
); | |
$this->config = $appConfig; | |
$this->reflector = $reflector; | |
} | |
/** | |
* Checks if sharing is enabled before the controllers is executed | |
* | |
* Inspects the controller method annotations and if PublicPage is found | |
* it makes sure that sharing is enabled in the configuration settings | |
* | |
* The check is not performed on "guest" pages which don't require sharing | |
* to be enabled | |
* | |
* @inheritDoc | |
*/ | |
public function beforeController($controller, $methodName) { | |
if ($this->reflector->hasAnnotation('Guest')) { | |
return; | |
} | |
$sharingEnabled = $this->isSharingEnabled(); | |
$isPublicPage = $this->reflector->hasAnnotation('PublicPage'); | |
if ($isPublicPage && !$sharingEnabled) { | |
throw new CheckException("'Sharing is disabled'", Http::STATUS_SERVICE_UNAVAILABLE); | |
} | |
} | |
/** | |
* Checks whether public sharing (via links) is enabled | |
* | |
* @return bool | |
*/ | |
private function isSharingEnabled() { | |
$shareApiAllowLinks = $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'); | |
if ($shareApiAllowLinks !== 'yes') { | |
return false; | |
} | |
return true; | |
} | |
} |