summaryrefslogtreecommitdiffstats
path: root/lib/private/share20
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@owncloud.com>2016-02-04 11:13:06 +0100
committerBjörn Schießle <bjoern@schiessle.org>2016-02-08 11:30:48 +0100
commita506f9ca3f0d49a346e9950b078a273f30fbf0c0 (patch)
tree62c7035119cf3176156145300068dccac5f24781 /lib/private/share20
parentbec1de8a385991f8ecc6837c672ea43a0e3dc8cf (diff)
downloadnextcloud-server-a506f9ca3f0d49a346e9950b078a273f30fbf0c0.tar.gz
nextcloud-server-a506f9ca3f0d49a346e9950b078a273f30fbf0c0.zip
Respect not allowing outgoing shares
Diffstat (limited to 'lib/private/share20')
-rw-r--r--lib/private/share20/manager.php7
-rw-r--r--lib/private/share20/providerfactory.php31
2 files changed, 31 insertions, 7 deletions
diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php
index c3c739e4874..7cd44a7cb37 100644
--- a/lib/private/share20/manager.php
+++ b/lib/private/share20/manager.php
@@ -1072,4 +1072,11 @@ class Manager implements IManager {
return false;
}
+ /**
+ * @inheritdoc
+ */
+ public function outgoingServer2ServerSharesAllowed() {
+ return $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes';
+ }
+
}
diff --git a/lib/private/share20/providerfactory.php b/lib/private/share20/providerfactory.php
index dba96aebdcf..bb440d2e01f 100644
--- a/lib/private/share20/providerfactory.php
+++ b/lib/private/share20/providerfactory.php
@@ -76,6 +76,14 @@ class ProviderFactory implements IProviderFactory {
protected function federatedShareProvider() {
if ($this->federatedProvider === null) {
/*
+ * Check if the app is enabled
+ */
+ $appManager = $this->serverContainer->getAppManager();
+ if (!$appManager->isEnabledForUser('federatedfilesharing')) {
+ return null;
+ }
+
+ /*
* TODO: add factory to federated sharing app
*/
$l = $this->serverContainer->getL10N('federatedfilessharing');
@@ -109,31 +117,40 @@ class ProviderFactory implements IProviderFactory {
* @inheritdoc
*/
public function getProvider($id) {
+ $provider = null;
if ($id === 'ocinternal') {
- return $this->defaultShareProvider();
+ $provider = $this->defaultShareProvider();
+ } else if ($id === 'ocFederatedSharing') {
+ $provider = $this->federatedShareProvider();
}
- if ($id === 'ocFederatedSharing') {
- return $this->federatedShareProvider();
+ if ($provider === null) {
+ throw new ProviderException('No provider with id .' . $id . ' found.');
}
- throw new ProviderException('No provider with id .' . $id . ' found.');
+ return $provider;
}
/**
* @inheritdoc
*/
public function getProviderForType($shareType) {
+ $provider = null;
+
//FIXME we should not report type 2
if ($shareType === \OCP\Share::SHARE_TYPE_USER ||
$shareType === 2 ||
$shareType === \OCP\Share::SHARE_TYPE_GROUP ||
$shareType === \OCP\Share::SHARE_TYPE_LINK) {
- return $this->defaultShareProvider();
+ $provider = $this->defaultShareProvider();
} else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
- return $this->federatedShareProvider();
+ $provider = $this->federatedShareProvider();
+ }
+
+ if ($provider === null) {
+ throw new ProviderException('No share provider for share type ' . $shareType);
}
- throw new ProviderException('No share provider for share type ' . $shareType);
+ return $provider;
}
}