Skip to content

Commit

Permalink
Merge pull request #2696 from nextcloud/shared-scanner-unmasked-11
Browse files Browse the repository at this point in the history
[11] use unmasked permissions in shared scanner
  • Loading branch information
LukasReschke committed Dec 16, 2016
2 parents 3f20302 + be09724 commit 80ab69b
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 3 deletions.
9 changes: 7 additions & 2 deletions apps/files_sharing/lib/Scanner.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
* Scanner for SharedStorage
*/
class Scanner extends \OC\Files\Cache\Scanner {
/**
* @var \OCA\Files_Sharing\SharedStorage $storage
*/
protected $storage;

private $sourceScanner;

/**
Expand All @@ -46,8 +51,8 @@ public function getData($path) {
if ($data === null) {
return null;
}
list($sourceStorage, $internalPath) = $this->storage->resolvePath($path);
$data['permissions'] = $sourceStorage->getPermissions($internalPath);
$internalPath = $this->storage->getSourcePath($path);
$data['permissions'] = $this->storage->getSourceStorage()->getPermissions($internalPath);
return $data;
}

Expand Down
3 changes: 2 additions & 1 deletion apps/files_sharing/lib/SharedStorage.php
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,8 @@ public function setAvailability($available) {
}

public function getSourceStorage() {
return $this->getWrapperStorage();
$this->init();
return $this->nonMaskedStorage;
}

public function getWrapperStorage() {
Expand Down
28 changes: 28 additions & 0 deletions apps/files_sharing/tests/SharedStorageTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -531,4 +531,32 @@ public function testNameConflict() {
$this->shareManager->deleteShare($share1);
$this->shareManager->deleteShare($share2);
}

public function testOwnerPermissions() {
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);

$share = $this->share(
\OCP\Share::SHARE_TYPE_USER,
$this->folder,
self::TEST_FILES_SHARING_API_USER1,
self::TEST_FILES_SHARING_API_USER2,
\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_DELETE
);

self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
$view = new \OC\Files\View('/' . self::TEST_FILES_SHARING_API_USER2 . '/files');
$this->assertTrue($view->file_exists($this->folder));

$view->file_put_contents($this->folder . '/newfile.txt', 'asd');

self::loginHelper(self::TEST_FILES_SHARING_API_USER1);

$this->assertTrue($this->view->file_exists($this->folder . '/newfile.txt'));
$this->assertEquals(\OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
$this->view->getFileInfo($this->folder . '/newfile.txt')->getPermissions());

$this->view->unlink($this->folder);
$this->shareManager->deleteShare($share);

}
}
20 changes: 20 additions & 0 deletions build/integration/features/webdav-related.feature
Original file line number Diff line number Diff line change
Expand Up @@ -427,3 +427,23 @@ Feature: webdav-related
And User "user0" uploads file with content "copytest" to "/copytest.txt"
When User "user0" copies file "/copytest.txt" to "/testcopypermissionsNotAllowed/copytest.txt"
Then the HTTP status code should be "403"

Scenario: Uploading a file as recipient with limited permissions
Given using new dav path
And As an "admin"
And user "user0" exists
And user "user1" exists
And user "user0" has a quota of "10 MB"
And user "user1" has a quota of "10 MB"
And As an "user1"
And user "user1" created a folder "/testfolder"
And as "user1" creating a share with
| path | testfolder |
| shareType | 0 |
| permissions | 23 |
| shareWith | user0 |
And As an "user0"
And User "user0" uploads file "data/textfile.txt" to "/testfolder/asdf.txt"
And As an "user1"
When User "user1" deletes file "/testfolder/asdf.txt"
Then the HTTP status code should be "204"

0 comments on commit 80ab69b

Please sign in to comment.