summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2014-07-28 22:35:11 +0200
committerBjoern Schiessle <schiessle@owncloud.com>2014-07-29 14:05:02 +0200
commitb4a379b7e39a989902de204349f187f614f87ced (patch)
tree8a7b3adf18ae07c4f254ff38c40146a90c09d106
parent59aa54ddb8776ee4adc05948ca19fe6730a05e5c (diff)
downloadnextcloud-server-b4a379b7e39a989902de204349f187f614f87ced.tar.gz
nextcloud-server-b4a379b7e39a989902de204349f187f614f87ced.zip
remove share permission if user is excluded from sharing
-rw-r--r--lib/private/share/share.php2
-rw-r--r--tests/lib/share/share.php33
2 files changed, 34 insertions, 1 deletions
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index af286e7154e..0c42853302d 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -1397,7 +1397,7 @@ class Share extends \OC\Share\Constants {
}
}
// Check if resharing is allowed, if not remove share permission
- if (isset($row['permissions']) && !self::isResharingAllowed()) {
+ if (isset($row['permissions']) && (!self::isResharingAllowed() | \OC_Util::isSharingDisabledForUser())) {
$row['permissions'] &= ~\OCP\PERMISSION_SHARE;
}
// Add display names to result
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index 0e3dfe8291d..24dedb619f8 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -375,6 +375,39 @@ class Test_Share extends PHPUnit_Framework_TestCase {
}
+ /*
+ * if user is in a group excluded from resharing, then the share permission should
+ * be removed
+ */
+ public function testShareWithUserAndUserIsExcludedFromResharing() {
+
+ OC_User::setUserId($this->user1);
+ $this->assertTrue(
+ OCP\Share::shareItem('test', 'test.txt', OCP\Share::SHARE_TYPE_USER, $this->user4, OCP\PERMISSION_ALL),
+ 'Failed asserting that user 1 successfully shared text.txt with user 4.'
+ );
+ $this->assertContains(
+ 'test.txt',
+ OCP\Share::getItemShared('test', 'test.txt', Test_Share_Backend::FORMAT_SOURCE),
+ 'Failed asserting that test.txt is a shared file of user 1.'
+ );
+
+ // exclude group2 from sharing
+ \OC_Appconfig::setValue('core', 'shareapi_exclude_groups_list', $this->group2);
+ \OC_Appconfig::setValue('core', 'shareapi_exclude_groups', "yes");
+
+ OC_User::setUserId($this->user4);
+
+ $share = OCP\Share::getItemSharedWith('test', 'test.txt');
+
+ $this->assertSame(\OCP\PERMISSION_ALL & ~OCP\PERMISSION_SHARE, $share['permissions'],
+ 'Failed asserting that user 4 is excluded from re-sharing');
+
+ \OC_Appconfig::deleteKey('core', 'shareapi_exclude_groups_list');
+ \OC_Appconfig::deleteKey('core', 'shareapi_exclude_groups');
+
+ }
+
protected function shareUserOneTestFileWithGroupOne() {
OC_User::setUserId($this->user1);
$this->assertTrue(