aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-12-08 11:32:18 +0100
committerVincent Petry <pvince81@owncloud.com>2015-12-08 13:04:22 +0100
commite241d2631672836d7a512cd890b14d7523fbc756 (patch)
tree16c5a97538a6f430d6963c56f0f9546a640b90dd
parentbec34f12757517a784f6e35fc6b7294ab1673c59 (diff)
downloadnextcloud-server-e241d2631672836d7a512cd890b14d7523fbc756.tar.gz
nextcloud-server-e241d2631672836d7a512cd890b14d7523fbc756.zip
Compute share permissions in the view
The share permissions are now computed in the View/FileInfo instead of storing them directly/permanently on the storage
-rw-r--r--apps/files/tests/controller/apicontrollertest.php9
-rw-r--r--lib/private/files/fileinfo.php8
-rw-r--r--lib/private/files/storage/common.php4
3 files changed, 13 insertions, 8 deletions
diff --git a/apps/files/tests/controller/apicontrollertest.php b/apps/files/tests/controller/apicontrollertest.php
index fb728d5eff0..bc66e4641b9 100644
--- a/apps/files/tests/controller/apicontrollertest.php
+++ b/apps/files/tests/controller/apicontrollertest.php
@@ -92,6 +92,7 @@ class ApiControllerTest extends TestCase {
[
'mtime' => 55,
'mimetype' => 'application/pdf',
+ 'permissions' => 31,
'size' => 1234,
'etag' => 'MyEtag',
],
@@ -111,7 +112,7 @@ class ApiControllerTest extends TestCase {
'parentId' => null,
'mtime' => 55000,
'name' => 'root.txt',
- 'permissions' => null,
+ 'permissions' => 31,
'mimetype' => 'application/pdf',
'size' => 1234,
'type' => 'file',
@@ -139,6 +140,7 @@ class ApiControllerTest extends TestCase {
[
'mtime' => 55,
'mimetype' => 'application/pdf',
+ 'permissions' => 31,
'size' => 1234,
'etag' => 'MyEtag',
],
@@ -155,6 +157,7 @@ class ApiControllerTest extends TestCase {
[
'mtime' => 999,
'mimetype' => 'application/binary',
+ 'permissions' => 31,
'size' => 9876,
'etag' => 'SubEtag',
],
@@ -174,7 +177,7 @@ class ApiControllerTest extends TestCase {
'parentId' => null,
'mtime' => 55000,
'name' => 'root.txt',
- 'permissions' => null,
+ 'permissions' => 31,
'mimetype' => 'application/pdf',
'size' => 1234,
'type' => 'file',
@@ -191,7 +194,7 @@ class ApiControllerTest extends TestCase {
'parentId' => null,
'mtime' => 999000,
'name' => 'root.txt',
- 'permissions' => null,
+ 'permissions' => 31,
'mimetype' => 'application/binary',
'size' => 9876,
'type' => 'file',
diff --git a/lib/private/files/fileinfo.php b/lib/private/files/fileinfo.php
index 5b5e8697004..0525c259604 100644
--- a/lib/private/files/fileinfo.php
+++ b/lib/private/files/fileinfo.php
@@ -100,6 +100,8 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
return $this->getType();
} else if ($offset === 'etag') {
return $this->getEtag();
+ } elseif ($offset === 'permissions') {
+ return $this->getPermissions();
} elseif (isset($this->data[$offset])) {
return $this->data[$offset];
} else {
@@ -193,7 +195,11 @@ class FileInfo implements \OCP\Files\FileInfo, \ArrayAccess {
* @return int
*/
public function getPermissions() {
- return $this->data['permissions'];
+ $perms = $this->data['permissions'];
+ if (\OCP\Util::isSharingDisabledForUser()) {
+ $perms = $perms & ~\OCP\Constants::PERMISSION_SHARE;
+ }
+ return $perms;
}
/**
diff --git a/lib/private/files/storage/common.php b/lib/private/files/storage/common.php
index 0cd67e343ff..b06543d0a6a 100644
--- a/lib/private/files/storage/common.php
+++ b/lib/private/files/storage/common.php
@@ -141,10 +141,6 @@ abstract class Common implements Storage {
}
public function isSharable($path) {
- if (\OCP\Util::isSharingDisabledForUser()) {
- return false;
- }
-
return $this->isReadable($path);
}