diff options
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/lib/sharedstorage.php | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 3ae5749ea87..101503a03fb 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -32,6 +32,7 @@ namespace OC\Files\Storage; use OC\Files\Filesystem; use OCA\Files_Sharing\ISharedStorage; +use OCP\Constants; use OCP\Files\Cache\ICacheEntry; use OCP\Files\Storage\IStorage; use OCP\Lock\ILockingProvider; @@ -83,6 +84,10 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { $this->sourceRootInfo = $this->sourceStorage->getCache()->get($sourceInternalPath); } + private function isValid() { + return ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE; + } + /** * get id of the mount point * @@ -133,6 +138,9 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { * @return string|false source file path or false if not found */ public function getSourcePath($target) { + if (!$this->isValid()){ + return false; + } $source = $this->getFile($target); if ($source) { if (!isset($source['fullPath'])) { @@ -157,6 +165,9 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { * @return int CRUDS permissions granted */ public function getPermissions($target = '') { + if (!$this->isValid()) { + return 0; + } $permissions = $this->share['permissions']; // part files and the mount point always have delete permissions if ($target === '' || pathinfo($target, PATHINFO_EXTENSION) === 'part') { @@ -253,13 +264,14 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { } public function isReadable($path) { - $isReadable = false; - if ($source = $this->getSourcePath($path)) { - list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source); - $isReadable = $storage->isReadable($internalPath); + if (!$this->isValid()) { + return false; } - - return $isReadable && $this->file_exists($path); + if (!$this->file_exists($path)) { + return false; + } + list($storage, $internalPath) = $this->resolvePath($path); + return $storage->isReadable($internalPath); } public function isUpdatable($path) { |