summaryrefslogtreecommitdiffstats
path: root/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php')
-rw-r--r--lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php28
1 files changed, 27 insertions, 1 deletions
diff --git a/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php b/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
index 38267779e65..92b1673b640 100644
--- a/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
+++ b/lib/private/AppFramework/Middleware/PublicShare/PublicShareMiddleware.php
@@ -9,6 +9,7 @@ use OCP\AppFramework\Http\Response;
use OCP\AppFramework\Middleware;
use OCP\AppFramework\PublicShareController;
use OCP\Files\NotFoundException;
+use OCP\IConfig;
use OCP\IRequest;
use OCP\ISession;
@@ -19,9 +20,13 @@ class PublicShareMiddleware extends Middleware {
/** @var ISession */
private $session;
- public function __construct(IRequest $request, ISession $session) {
+ /** @var IConfig */
+ private $config;
+
+ public function __construct(IRequest $request, ISession $session, IConfig $config) {
$this->request = $request;
$this->session = $session;
+ $this->config = $config;
}
public function beforeController($controller, $methodName) {
@@ -29,6 +34,10 @@ class PublicShareMiddleware extends Middleware {
return;
}
+ if (!$this->isLinkSharingEnabled()) {
+ throw new NotFoundException('Link sharing is disabled');
+ }
+
// We require the token parameter to be set
$token = $this->request->getParam('token');
if ($token === null) {
@@ -83,4 +92,21 @@ class PublicShareMiddleware extends Middleware {
$tmp = explode('.', $route);
return array_pop($tmp);
}
+
+ /**
+ * Check if link sharing is allowed
+ */
+ private function isLinkSharingEnabled(): bool {
+ // Check if the shareAPI is enabled
+ if ($this->config->getAppValue('core', 'shareapi_enabled', 'yes') !== 'yes') {
+ return false;
+ }
+
+ // Check whether public sharing is enabled
+ if($this->config->getAppValue('core', 'shareapi_allow_links', 'yes') !== 'yes') {
+ return false;
+ }
+
+ return true;
+ }
}