Merge pull request #22683 from owncloud/fix_22682

Relax rootfolder check
remotes/origin/s3patch
Thomas Müller 10 years ago
commit 6526c122af
  1. 14
      build/integration/features/sharing-v1.feature
  2. 2
      lib/private/share20/manager.php
  3. 11
      tests/lib/share20/managertest.php

@ -513,4 +513,16 @@ Feature: sharing
When creating a share with
| path | / |
| shareType | 3 |
Then the OCS status code should be "403"
Then the OCS status code should be "403"
Scenario: Allow modification of reshare
Given user "user0" exists
And user "user1" exists
And user "user2" exists
And user "user0" created a folder "/TMP"
And file "TMP" of user "user0" is shared with user "user1"
And file "TMP" of user "user1" is shared with user "user2"
And As an "user1"
When Updating last share with
| permissions | 1 |
Then the OCS status code should be "100"

@ -198,7 +198,7 @@ class Manager implements IManager {
}
// And you can't share your rootfolder
if ($this->rootFolder->getUserFolder($share->getSharedBy())->isSubNode($share->getNode()) === false) {
if ($this->rootFolder->getUserFolder($share->getSharedBy())->getPath() === $share->getNode()->getPath()) {
throw new \InvalidArgumentException('You can\'t share your root folder');
}

@ -644,6 +644,15 @@ class ManagerTest extends \Test\TestCase {
$data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $limitedPermssions, $group0, $user0, $user0, 17, null, null), 'Cannot increase permissions of path', true];
$data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $limitedPermssions, null, $user0, $user0, 3, null, null), 'Cannot increase permissions of path', true];
$rootFolder = $this->getMock('\OCP\Files\Folder');
$rootFolder->method('isShareable')->willReturn(true);
$rootFolder->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
$rootFolder->method('getPath')->willReturn('myrootfolder');
$data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_USER, $rootFolder, $user2, $user0, $user0, 30, null, null), 'You can\'t share your root folder', true];
$data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_GROUP, $rootFolder, $group0, $user0, $user0, 2, null, null), 'You can\'t share your root folder', true];
$data[] = [$this->createShare(null, \OCP\Share::SHARE_TYPE_LINK, $rootFolder, null, $user0, $user0, 16, null, null), 'You can\'t share your root folder', true];
$allPermssions = $this->getMock('\OCP\Files\Folder');
$allPermssions->method('isShareable')->willReturn(true);
$allPermssions->method('getPermissions')->willReturn(\OCP\Constants::PERMISSION_ALL);
@ -678,8 +687,10 @@ class ManagerTest extends \Test\TestCase {
]));
$userFolder = $this->getMock('\OCP\Files\Folder');
$userFolder->method('getPath')->willReturn('myrootfolder');
$this->rootFolder->method('getUserFolder')->willReturn($userFolder);
try {
$this->invokePrivate($this->manager, 'generalCreateChecks', [$share]);
$thrown = false;

Loading…
Cancel
Save