[Sharing 2.0] Use the rootfolder to get the path of a share
We need to use the rootfolder here since we also other people than the shareOwner can request a share.
This commit is contained in:
parent
85976b7293
commit
8d309767d7
|
@ -40,7 +40,7 @@ class OCSShareWrapper {
|
||||||
\OC::$server->getGroupManager(),
|
\OC::$server->getGroupManager(),
|
||||||
\OC::$server->getUserManager(),
|
\OC::$server->getUserManager(),
|
||||||
\OC::$server->getRequest(),
|
\OC::$server->getRequest(),
|
||||||
\OC::$server->getUserFolder(),
|
\OC::$server->getRootFolder(),
|
||||||
\OC::$server->getURLGenerator(),
|
\OC::$server->getURLGenerator(),
|
||||||
\OC::$server->getUserSession()->getUser());
|
\OC::$server->getUserSession()->getUser());
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ use OCP\IRequest;
|
||||||
use OCP\Files\Folder;
|
use OCP\Files\Folder;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
|
use OCP\Files\IRootFolder;
|
||||||
|
|
||||||
class Share20OCS {
|
class Share20OCS {
|
||||||
|
|
||||||
|
@ -43,8 +44,8 @@ class Share20OCS {
|
||||||
/** @var IRequest */
|
/** @var IRequest */
|
||||||
private $request;
|
private $request;
|
||||||
|
|
||||||
/** @var Folder */
|
/** @var IRootFolder */
|
||||||
private $userFolder;
|
private $rootFolder;
|
||||||
|
|
||||||
/** @var IUrlGenerator */
|
/** @var IUrlGenerator */
|
||||||
private $urlGenerator;
|
private $urlGenerator;
|
||||||
|
@ -57,7 +58,7 @@ class Share20OCS {
|
||||||
IGroupManager $groupManager,
|
IGroupManager $groupManager,
|
||||||
IUserManager $userManager,
|
IUserManager $userManager,
|
||||||
IRequest $request,
|
IRequest $request,
|
||||||
Folder $userFolder,
|
IRootFolder $rootFolder,
|
||||||
IURLGenerator $urlGenerator,
|
IURLGenerator $urlGenerator,
|
||||||
IUser $currentUser
|
IUser $currentUser
|
||||||
) {
|
) {
|
||||||
|
@ -65,7 +66,7 @@ class Share20OCS {
|
||||||
$this->userManager = $userManager;
|
$this->userManager = $userManager;
|
||||||
$this->groupManager = $groupManager;
|
$this->groupManager = $groupManager;
|
||||||
$this->request = $request;
|
$this->request = $request;
|
||||||
$this->userFolder = $userFolder;
|
$this->rootFolder = $rootFolder;
|
||||||
$this->urlGenerator = $urlGenerator;
|
$this->urlGenerator = $urlGenerator;
|
||||||
$this->currentUser = $currentUser;
|
$this->currentUser = $currentUser;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +91,7 @@ class Share20OCS {
|
||||||
];
|
];
|
||||||
|
|
||||||
$path = $share->getPath();
|
$path = $share->getPath();
|
||||||
$result['path'] = $this->userFolder->getRelativePath($path->getPath());
|
$result['path'] = $this->rootFolder->getUserFolder($share->getShareOwner()->getUID())->getRelativePath($path->getPath());
|
||||||
if ($path instanceOf \OCP\Files\Folder) {
|
if ($path instanceOf \OCP\Files\Folder) {
|
||||||
$result['item_type'] = 'folder';
|
$result['item_type'] = 'folder';
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -25,9 +25,9 @@ use OCA\Files_Sharing\API\Share20OCS;
|
||||||
use OCP\IGroupManager;
|
use OCP\IGroupManager;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
use OCP\Files\Folder;
|
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
|
use OCP\Files\IRootFolder;
|
||||||
|
|
||||||
class Share20OCSTest extends \Test\TestCase {
|
class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
|
@ -43,8 +43,8 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
/** @var IRequest */
|
/** @var IRequest */
|
||||||
private $request;
|
private $request;
|
||||||
|
|
||||||
/** @var Folder */
|
/** @var IRootFolder */
|
||||||
private $userFolder;
|
private $rootFolder;
|
||||||
|
|
||||||
/** @var IURLGenerator */
|
/** @var IURLGenerator */
|
||||||
private $urlGenerator;
|
private $urlGenerator;
|
||||||
|
@ -62,7 +62,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->groupManager = $this->getMock('OCP\IGroupManager');
|
$this->groupManager = $this->getMock('OCP\IGroupManager');
|
||||||
$this->userManager = $this->getMock('OCP\IUserManager');
|
$this->userManager = $this->getMock('OCP\IUserManager');
|
||||||
$this->request = $this->getMock('OCP\IRequest');
|
$this->request = $this->getMock('OCP\IRequest');
|
||||||
$this->userFolder = $this->getMock('OCP\Files\Folder');
|
$this->rootFolder = $this->getMock('OCP\Files\IRootFolder');
|
||||||
$this->urlGenerator = $this->getMock('OCP\IURLGenerator');
|
$this->urlGenerator = $this->getMock('OCP\IURLGenerator');
|
||||||
$this->currentUser = $this->getMock('OCP\IUser');
|
$this->currentUser = $this->getMock('OCP\IUser');
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
$this->request,
|
||||||
$this->userFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser
|
$this->currentUser
|
||||||
);
|
);
|
||||||
|
@ -135,7 +135,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->assertEquals($expected, $this->ocs->getShare(42));
|
$this->assertEquals($expected, $this->ocs->getShare(42));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createShare($id, $shareType, $sharedWith, $sharedBy, $path, $permissions,
|
public function createShare($id, $shareType, $sharedWith, $sharedBy, $shareOwner, $path, $permissions,
|
||||||
$shareTime, $expiration, $parent, $target, $mail_send, $token=null,
|
$shareTime, $expiration, $parent, $target, $mail_send, $token=null,
|
||||||
$password=null) {
|
$password=null) {
|
||||||
$share = $this->getMock('OC\Share20\IShare');
|
$share = $this->getMock('OC\Share20\IShare');
|
||||||
|
@ -143,6 +143,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$share->method('getShareType')->willReturn($shareType);
|
$share->method('getShareType')->willReturn($shareType);
|
||||||
$share->method('getSharedWith')->willReturn($sharedWith);
|
$share->method('getSharedWith')->willReturn($sharedWith);
|
||||||
$share->method('getSharedBy')->willReturn($sharedBy);
|
$share->method('getSharedBy')->willReturn($sharedBy);
|
||||||
|
$share->method('getShareOwner')->willReturn($shareOwner);
|
||||||
$share->method('getPath')->willReturn($path);
|
$share->method('getPath')->willReturn($path);
|
||||||
$share->method('getPermissions')->willReturn($permissions);
|
$share->method('getPermissions')->willReturn($permissions);
|
||||||
$share->method('getShareTime')->willReturn($shareTime);
|
$share->method('getShareTime')->willReturn($shareTime);
|
||||||
|
@ -189,17 +190,20 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$folder->method('getParent')->willReturn($parentFolder);
|
$folder->method('getParent')->willReturn($parentFolder);
|
||||||
|
|
||||||
// File shared with user
|
// File shared with user
|
||||||
$share = $this->createShare(100,
|
$share = $this->createShare(
|
||||||
\OCP\Share::SHARE_TYPE_USER,
|
100,
|
||||||
$user,
|
\OCP\Share::SHARE_TYPE_USER,
|
||||||
$owner,
|
$user,
|
||||||
$file,
|
$owner,
|
||||||
4,
|
$owner,
|
||||||
5,
|
$file,
|
||||||
null,
|
4,
|
||||||
6,
|
5,
|
||||||
'target',
|
null,
|
||||||
0);
|
6,
|
||||||
|
'target',
|
||||||
|
0
|
||||||
|
);
|
||||||
$expected = [
|
$expected = [
|
||||||
'id' => 100,
|
'id' => 100,
|
||||||
'share_type' => \OCP\Share::SHARE_TYPE_USER,
|
'share_type' => \OCP\Share::SHARE_TYPE_USER,
|
||||||
|
@ -225,17 +229,20 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$data[] = [$share, $expected];
|
$data[] = [$share, $expected];
|
||||||
|
|
||||||
// Folder shared with group
|
// Folder shared with group
|
||||||
$share = $this->createShare(101,
|
$share = $this->createShare(
|
||||||
\OCP\Share::SHARE_TYPE_GROUP,
|
101,
|
||||||
$group,
|
\OCP\Share::SHARE_TYPE_GROUP,
|
||||||
$owner,
|
$group,
|
||||||
$folder,
|
$owner,
|
||||||
4,
|
$owner,
|
||||||
5,
|
$folder,
|
||||||
null,
|
4,
|
||||||
6,
|
5,
|
||||||
'target',
|
null,
|
||||||
0);
|
6,
|
||||||
|
'target',
|
||||||
|
0
|
||||||
|
);
|
||||||
$expected = [
|
$expected = [
|
||||||
'id' => 101,
|
'id' => 101,
|
||||||
'share_type' => \OCP\Share::SHARE_TYPE_GROUP,
|
'share_type' => \OCP\Share::SHARE_TYPE_GROUP,
|
||||||
|
@ -262,19 +269,22 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
|
|
||||||
// File shared by link with Expire
|
// File shared by link with Expire
|
||||||
$expire = \DateTime::createFromFormat('Y-m-d h:i:s', '2000-01-02 01:02:03');
|
$expire = \DateTime::createFromFormat('Y-m-d h:i:s', '2000-01-02 01:02:03');
|
||||||
$share = $this->createShare(101,
|
$share = $this->createShare(
|
||||||
\OCP\Share::SHARE_TYPE_LINK,
|
101,
|
||||||
null,
|
\OCP\Share::SHARE_TYPE_LINK,
|
||||||
$owner,
|
null,
|
||||||
$folder,
|
$owner,
|
||||||
4,
|
$owner,
|
||||||
5,
|
$folder,
|
||||||
$expire,
|
4,
|
||||||
6,
|
5,
|
||||||
'target',
|
$expire,
|
||||||
0,
|
6,
|
||||||
'token',
|
'target',
|
||||||
'password');
|
0,
|
||||||
|
'token',
|
||||||
|
'password'
|
||||||
|
);
|
||||||
$expected = [
|
$expected = [
|
||||||
'id' => 101,
|
'id' => 101,
|
||||||
'share_type' => \OCP\Share::SHARE_TYPE_LINK,
|
'share_type' => \OCP\Share::SHARE_TYPE_LINK,
|
||||||
|
@ -313,7 +323,7 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
$this->groupManager,
|
$this->groupManager,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
$this->request,
|
$this->request,
|
||||||
$this->userFolder,
|
$this->rootFolder,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->currentUser
|
$this->currentUser
|
||||||
])->setMethods(['canAccessShare'])
|
])->setMethods(['canAccessShare'])
|
||||||
|
@ -327,10 +337,15 @@ class Share20OCSTest extends \Test\TestCase {
|
||||||
->with($share->getId())
|
->with($share->getId())
|
||||||
->willReturn($share);
|
->willReturn($share);
|
||||||
|
|
||||||
$this->userFolder
|
$userFolder = $this->getMock('OCP\Files\Folder');
|
||||||
|
$userFolder
|
||||||
->method('getRelativePath')
|
->method('getRelativePath')
|
||||||
->will($this->returnArgument(0));
|
->will($this->returnArgument(0));
|
||||||
|
|
||||||
|
$this->rootFolder->method('getUserFolder')
|
||||||
|
->with($share->getShareOwner()->getUID())
|
||||||
|
->willReturn($userFolder);
|
||||||
|
|
||||||
$this->urlGenerator
|
$this->urlGenerator
|
||||||
->method('linkToRouteAbsolute')
|
->method('linkToRouteAbsolute')
|
||||||
->willReturn('url');
|
->willReturn('url');
|
||||||
|
|
Loading…
Reference in New Issue