Merge pull request #9189 from owncloud/sharing_fix_permissions
Sharing fix permissions
This commit is contained in:
commit
c94c69aea1
|
@ -95,9 +95,9 @@ class Shared_Cache extends Cache {
|
||||||
}
|
}
|
||||||
$data['uid_owner'] = $this->storage->getOwner($file);
|
$data['uid_owner'] = $this->storage->getOwner($file);
|
||||||
if (isset($data['permissions'])) {
|
if (isset($data['permissions'])) {
|
||||||
$data['permissions'] &= $this->storage->getPermissions('');
|
$data['permissions'] &= $this->storage->getPermissions($file);
|
||||||
} else {
|
} else {
|
||||||
$data['permissions'] = $this->storage->getPermissions('');
|
$data['permissions'] = $this->storage->getPermissions($file);
|
||||||
}
|
}
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ class Shared_Cache extends Cache {
|
||||||
$sourceFolderContent[$key]['path'] = $dir . $c['name'];
|
$sourceFolderContent[$key]['path'] = $dir . $c['name'];
|
||||||
$sourceFolderContent[$key]['uid_owner'] = $parent['uid_owner'];
|
$sourceFolderContent[$key]['uid_owner'] = $parent['uid_owner'];
|
||||||
$sourceFolderContent[$key]['displayname_owner'] = $parent['uid_owner'];
|
$sourceFolderContent[$key]['displayname_owner'] = $parent['uid_owner'];
|
||||||
$sourceFolderContent[$key]['permissions'] = $sourceFolderContent[$key]['permissions'] & $this->storage->getPermissions('');
|
$sourceFolderContent[$key]['permissions'] = $sourceFolderContent[$key]['permissions'] & $this->storage->getPermissions($dir . $c['name']);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $sourceFolderContent;
|
return $sourceFolderContent;
|
||||||
|
|
|
@ -145,10 +145,9 @@ class Test_Files_Sharing_Permissions extends Test_Files_Sharing_Base {
|
||||||
$this->assertEquals(27, $contents[1]['permissions']);
|
$this->assertEquals(27, $contents[1]['permissions']);
|
||||||
$contents = $this->secondView->getDirectoryContent('files/shareddirrestricted');
|
$contents = $this->secondView->getDirectoryContent('files/shareddirrestricted');
|
||||||
$this->assertEquals('subdir', $contents[0]['name']);
|
$this->assertEquals('subdir', $contents[0]['name']);
|
||||||
$this->assertEquals(7 | \OCP\PERMISSION_DELETE, $contents[0]['permissions']);
|
$this->assertEquals(7, $contents[0]['permissions']);
|
||||||
$this->assertEquals('textfile1.txt', $contents[1]['name']);
|
$this->assertEquals('textfile1.txt', $contents[1]['name']);
|
||||||
// 3 is correct because create is reserved to folders only
|
// 3 is correct because create is reserved to folders only
|
||||||
// delete permissions are added since mount points can always be deleted
|
$this->assertEquals(3, $contents[1]['permissions']);
|
||||||
$this->assertEquals(3 | \OCP\PERMISSION_DELETE, $contents[1]['permissions']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,4 +166,35 @@ class Test_Files_Sharing_Storage extends Test_Files_Sharing_Base {
|
||||||
$this->assertTrue($result);
|
$this->assertTrue($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testGetPermissions() {
|
||||||
|
$fileinfoFolder = $this->view->getFileInfo($this->folder);
|
||||||
|
|
||||||
|
$result = \OCP\Share::shareItem('folder', $fileinfoFolder['fileid'], \OCP\Share::SHARE_TYPE_USER,
|
||||||
|
self::TEST_FILES_SHARING_API_USER2, 1);
|
||||||
|
$this->assertTrue($result);
|
||||||
|
|
||||||
|
self::loginHelper(self::TEST_FILES_SHARING_API_USER2);
|
||||||
|
|
||||||
|
$this->assertTrue(\OC\Files\Filesystem::is_dir($this->folder));
|
||||||
|
|
||||||
|
// for the share root we expect:
|
||||||
|
// the shared permissions (1)
|
||||||
|
// the delete permission (8), to enable unshare
|
||||||
|
// the update permission (2), to allow renaming of the mount point
|
||||||
|
$rootInfo = \OC\Files\Filesystem::getFileInfo($this->folder);
|
||||||
|
$this->assertSame(11, $rootInfo->getPermissions());
|
||||||
|
|
||||||
|
// for the file within the shared folder we expect:
|
||||||
|
// the shared permissions (1)
|
||||||
|
$subfileInfo = \OC\Files\Filesystem::getFileInfo($this->folder . $this->filename);
|
||||||
|
$this->assertSame(1, $subfileInfo->getPermissions());
|
||||||
|
|
||||||
|
|
||||||
|
//cleanup
|
||||||
|
self::loginHelper(self::TEST_FILES_SHARING_API_USER1);
|
||||||
|
$result = \OCP\Share::unshare('folder', $fileinfoFolder['fileid'], \OCP\Share::SHARE_TYPE_USER,
|
||||||
|
self::TEST_FILES_SHARING_API_USER2);
|
||||||
|
$this->assertTrue($result);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -896,7 +896,7 @@ class View {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($mount instanceof MoveableMount) {
|
if ($mount instanceof MoveableMount && $internalPath === '') {
|
||||||
$data['permissions'] |= \OCP\PERMISSION_DELETE | \OCP\PERMISSION_UPDATE;
|
$data['permissions'] |= \OCP\PERMISSION_DELETE | \OCP\PERMISSION_UPDATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue