diff options
author | Roeland Jago Douma <rullzer@owncloud.com> | 2016-02-04 11:13:06 +0100 |
---|---|---|
committer | Björn Schießle <bjoern@schiessle.org> | 2016-02-08 11:30:48 +0100 |
commit | a506f9ca3f0d49a346e9950b078a273f30fbf0c0 (patch) | |
tree | 62c7035119cf3176156145300068dccac5f24781 /lib/private/share20 | |
parent | bec1de8a385991f8ecc6837c672ea43a0e3dc8cf (diff) | |
download | nextcloud-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.php | 7 | ||||
-rw-r--r-- | lib/private/share20/providerfactory.php | 31 |
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; } } |