diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-10-01 15:37:26 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-10-06 11:38:41 +0200 |
commit | 0817024e6f817a04c1258dba971f412550f6a058 (patch) | |
tree | 14db9c5b35452ddd0bdb5b6e181e9637f4538f1e /apps | |
parent | d9ffb094793f8bfff2c4231e5bde65900f6224cd (diff) | |
download | nextcloud-server-0817024e6f817a04c1258dba971f412550f6a058.tar.gz nextcloud-server-0817024e6f817a04c1258dba971f412550f6a058.zip |
Mark shares as dirty when changing permissions
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files_sharing/lib/propagation/changewatcher.php | 8 | ||||
-rw-r--r-- | apps/files_sharing/lib/propagation/propagationmanager.php | 8 | ||||
-rw-r--r-- | apps/files_sharing/tests/etagpropagation.php | 13 |
3 files changed, 26 insertions, 3 deletions
diff --git a/apps/files_sharing/lib/propagation/changewatcher.php b/apps/files_sharing/lib/propagation/changewatcher.php index 9da3ffe51a2..f9b28c7f967 100644 --- a/apps/files_sharing/lib/propagation/changewatcher.php +++ b/apps/files_sharing/lib/propagation/changewatcher.php @@ -99,4 +99,12 @@ class ChangeWatcher { $propagator->propagateChanges(); } } + + public function permissionsHook($params) { + $share = $params['share']; + + if ($share['item_type'] === 'file' || $share['item_type'] === 'folder') { + $this->recipientPropagator->markDirty($share, time()); + } + } } diff --git a/apps/files_sharing/lib/propagation/propagationmanager.php b/apps/files_sharing/lib/propagation/propagationmanager.php index d220551f8d6..7fcf467de9a 100644 --- a/apps/files_sharing/lib/propagation/propagationmanager.php +++ b/apps/files_sharing/lib/propagation/propagationmanager.php @@ -25,6 +25,7 @@ use OC\Files\Filesystem; use OC\Files\View; use OCP\IConfig; use OCP\IUserSession; +use OCP\Util; /** @@ -119,8 +120,9 @@ class PropagationManager { // for marking shares owned by the active user as dirty when a file inside them changes $this->listenToOwnerChanges($user->getUID(), $user->getUID()); - \OC_Hook::connect('OC_Filesystem', 'post_write', $watcher, 'writeHook'); - \OC_Hook::connect('OC_Filesystem', 'post_delete', $watcher, 'writeHook'); - \OC_Hook::connect('OC_Filesystem', 'post_rename', $watcher, 'renameHook'); + Util::connectHook('OC_Filesystem', 'post_write', $watcher, 'writeHook'); + Util::connectHook('OC_Filesystem', 'post_delete', $watcher, 'writeHook'); + Util::connectHook('OC_Filesystem', 'post_rename', $watcher, 'renameHook'); + Util::connectHook('OCP\Share', 'post_update_permissions', $watcher, 'permissionsHook'); } } diff --git a/apps/files_sharing/tests/etagpropagation.php b/apps/files_sharing/tests/etagpropagation.php index 6d23959d66d..427e371cd06 100644 --- a/apps/files_sharing/tests/etagpropagation.php +++ b/apps/files_sharing/tests/etagpropagation.php @@ -406,4 +406,17 @@ class EtagPropagation extends TestCase { $this->assertAllUnchaged(); } + + public function testEtagChangeOnPermissionsChange() { + $this->loginAsUser(self::TEST_FILES_SHARING_API_USER1); + + $view = new View('/' . self::TEST_FILES_SHARING_API_USER1 . '/files'); + $folderInfo = $view->getFileInfo('/sub1/sub2/folder'); + + \OCP\Share::setPermissions('folder', $folderInfo->getId(), \OCP\Share::SHARE_TYPE_USER, self::TEST_FILES_SHARING_API_USER2, 17); + + $this->assertEtagsForFoldersChanged([self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER4]); + + $this->assertAllUnchaged(); + } } |