mirror of
https://github.com/nextcloud/server.git
synced 2026-02-23 18:05:02 -05:00
Merge pull request #28084 from nextcloud/bugfix/noid/dav-user-id
Make sure that the dav propfind plugins always use the proper user id
This commit is contained in:
commit
97976746b8
5 changed files with 41 additions and 20 deletions
|
|
@ -40,6 +40,7 @@ use OCP\Files\StorageNotAvailableException;
|
|||
use OCP\IConfig;
|
||||
use OCP\IPreview;
|
||||
use OCP\IRequest;
|
||||
use OCP\IUserSession;
|
||||
use Sabre\DAV\Exception\Forbidden;
|
||||
use Sabre\DAV\Exception\NotFound;
|
||||
use Sabre\DAV\IFile;
|
||||
|
|
@ -88,6 +89,11 @@ class FilesPlugin extends ServerPlugin {
|
|||
*/
|
||||
private $tree;
|
||||
|
||||
/**
|
||||
* @var IUserSession
|
||||
*/
|
||||
private $userSession;
|
||||
|
||||
/**
|
||||
* Whether this is public webdav.
|
||||
* If true, some returned information will be stripped off.
|
||||
|
|
@ -128,11 +134,13 @@ class FilesPlugin extends ServerPlugin {
|
|||
IConfig $config,
|
||||
IRequest $request,
|
||||
IPreview $previewManager,
|
||||
IUserSession $userSession,
|
||||
$isPublic = false,
|
||||
$downloadAttachment = true) {
|
||||
$this->tree = $tree;
|
||||
$this->config = $config;
|
||||
$this->request = $request;
|
||||
$this->userSession = $userSession;
|
||||
$this->isPublic = $isPublic;
|
||||
$this->downloadAttachment = $downloadAttachment;
|
||||
$this->previewManager = $previewManager;
|
||||
|
|
@ -322,14 +330,22 @@ class FilesPlugin extends ServerPlugin {
|
|||
});
|
||||
|
||||
$propFind->handle(self::SHARE_PERMISSIONS_PROPERTYNAME, function () use ($node, $httpRequest) {
|
||||
$user = $this->userSession->getUser();
|
||||
if ($user === null) {
|
||||
return null;
|
||||
}
|
||||
return $node->getSharePermissions(
|
||||
$httpRequest->getRawServerValue('PHP_AUTH_USER')
|
||||
$user->getUID()
|
||||
);
|
||||
});
|
||||
|
||||
$propFind->handle(self::OCM_SHARE_PERMISSIONS_PROPERTYNAME, function () use ($node, $httpRequest) {
|
||||
$user = $this->userSession->getUser();
|
||||
if ($user === null) {
|
||||
return null;
|
||||
}
|
||||
$ncPermissions = $node->getSharePermissions(
|
||||
$httpRequest->getRawServerValue('PHP_AUTH_USER')
|
||||
$user->getUID()
|
||||
);
|
||||
$ocmPermissions = $this->ncPermissions2ocmPermissions($ncPermissions);
|
||||
return json_encode($ocmPermissions);
|
||||
|
|
@ -367,8 +383,12 @@ class FilesPlugin extends ServerPlugin {
|
|||
});
|
||||
|
||||
$propFind->handle(self::SHARE_NOTE, function () use ($node, $httpRequest) {
|
||||
$user = $this->userSession->getUser();
|
||||
if ($user === null) {
|
||||
return null;
|
||||
}
|
||||
return $node->getNoteFromShare(
|
||||
$httpRequest->getRawServerValue('PHP_AUTH_USER')
|
||||
$user->getUID()
|
||||
);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -171,6 +171,7 @@ class ServerFactory {
|
|||
$this->config,
|
||||
$this->request,
|
||||
$this->previewManager,
|
||||
$this->userSession,
|
||||
false,
|
||||
!$this->config->getSystemValue('debug', false)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ class Server {
|
|||
\OC::$server->getConfig(),
|
||||
$this->request,
|
||||
\OC::$server->getPreviewManager(),
|
||||
\OC::$server->getUserSession(),
|
||||
false,
|
||||
!\OC::$server->getConfig()->getSystemValue('debug', false)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ use OCP\Files\StorageNotAvailableException;
|
|||
use OCP\IConfig;
|
||||
use OCP\IPreview;
|
||||
use OCP\IRequest;
|
||||
use OCP\IUserSession;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Sabre\DAV\PropFind;
|
||||
use Sabre\DAV\PropPatch;
|
||||
use Sabre\DAV\Server;
|
||||
|
|
@ -99,30 +101,27 @@ class FilesPluginTest extends TestCase {
|
|||
*/
|
||||
private $previewManager;
|
||||
|
||||
/** @var IUserSession|MockObject */
|
||||
private $userSession;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
$this->server = $this->getMockBuilder(Server::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->tree = $this->getMockBuilder(Tree::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->server = $this->createMock(Server::class);
|
||||
$this->tree = $this->createMock(Tree::class);
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
$this->config->expects($this->any())->method('getSystemValue')
|
||||
->with($this->equalTo('data-fingerprint'), $this->equalTo(''))
|
||||
->willReturn('my_fingerprint');
|
||||
$this->request = $this->getMockBuilder(IRequest::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->previewManager = $this->getMockBuilder(IPreview::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->request = $this->createMock(IRequest::class);
|
||||
$this->previewManager = $this->createMock(IPreview::class);
|
||||
$this->userSession = $this->createMock(IUserSession::class);
|
||||
|
||||
$this->plugin = new FilesPlugin(
|
||||
$this->tree,
|
||||
$this->config,
|
||||
$this->request,
|
||||
$this->previewManager
|
||||
$this->previewManager,
|
||||
$this->userSession
|
||||
);
|
||||
|
||||
$response = $this->getMockBuilder(ResponseInterface::class)
|
||||
|
|
@ -264,6 +263,7 @@ class FilesPluginTest extends TestCase {
|
|||
->disableOriginalConstructor()
|
||||
->getMock(),
|
||||
$this->previewManager,
|
||||
$this->userSession,
|
||||
true);
|
||||
$this->plugin->initialize($this->server);
|
||||
|
||||
|
|
|
|||
|
|
@ -406,10 +406,9 @@ class FilesReportPluginTest extends \Test\TestCase {
|
|||
new \OCA\DAV\Connector\Sabre\FilesPlugin(
|
||||
$this->tree,
|
||||
$config,
|
||||
$this->getMockBuilder(IRequest::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock(),
|
||||
$this->previewManager
|
||||
$this->createMock(IRequest::class),
|
||||
$this->previewManager,
|
||||
$this->createMock(IUserSession::class)
|
||||
)
|
||||
);
|
||||
$this->plugin->initialize($this->server);
|
||||
|
|
|
|||
Loading…
Reference in a new issue