Skip to content

Commit 82f3e49

Browse files
icewind1991backportbot[bot]
authored andcommitted
feat: also send x-user-id for dav responses
Signed-off-by: Robin Appelman <robin@icewind.nl> [skip ci]
1 parent a87b956 commit 82f3e49

File tree

5 files changed

+40
-0
lines changed

5 files changed

+40
-0
lines changed

apps/dav/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,7 @@
225225
'OCA\\DAV\\Connector\\Sabre\\SharesPlugin' => $baseDir . '/../lib/Connector/Sabre/SharesPlugin.php',
226226
'OCA\\DAV\\Connector\\Sabre\\TagList' => $baseDir . '/../lib/Connector/Sabre/TagList.php',
227227
'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => $baseDir . '/../lib/Connector/Sabre/TagsPlugin.php',
228+
'OCA\\DAV\\Connector\\Sabre\\UserIdHeaderPlugin' => $baseDir . '/../lib/Connector/Sabre/UserIdHeaderPlugin.php',
228229
'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => $baseDir . '/../lib/Connector/Sabre/ZipFolderPlugin.php',
229230
'OCA\\DAV\\Controller\\BirthdayCalendarController' => $baseDir . '/../lib/Controller/BirthdayCalendarController.php',
230231
'OCA\\DAV\\Controller\\DirectController' => $baseDir . '/../lib/Controller/DirectController.php',

apps/dav/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ class ComposerStaticInitDAV
240240
'OCA\\DAV\\Connector\\Sabre\\SharesPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/SharesPlugin.php',
241241
'OCA\\DAV\\Connector\\Sabre\\TagList' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagList.php',
242242
'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagsPlugin.php',
243+
'OCA\\DAV\\Connector\\Sabre\\UserIdHeaderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/UserIdHeaderPlugin.php',
243244
'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/ZipFolderPlugin.php',
244245
'OCA\\DAV\\Controller\\BirthdayCalendarController' => __DIR__ . '/..' . '/../lib/Controller/BirthdayCalendarController.php',
245246
'OCA\\DAV\\Controller\\DirectController' => __DIR__ . '/..' . '/../lib/Controller/DirectController.php',

apps/dav/lib/Connector/Sabre/ServerFactory.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public function createServer(string $baseUri,
7575
$server->addPlugin(new LockPlugin());
7676

7777
$server->addPlugin(new RequestIdHeaderPlugin($this->request));
78+
$server->addPlugin(new UserIdHeaderPlugin($this->userSession));
7879

7980
$server->addPlugin(new ZipFolderPlugin(
8081
$objectTree,
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
/**
5+
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
6+
* SPDX-License-Identifier: AGPL-3.0-or-later
7+
*/
8+
9+
namespace OCA\DAV\Connector\Sabre;
10+
11+
use OCP\IUserSession;
12+
use Sabre\HTTP\RequestInterface;
13+
use Sabre\HTTP\ResponseInterface;
14+
15+
class UserIdHeaderPlugin extends \Sabre\DAV\ServerPlugin {
16+
public function __construct(
17+
private readonly IUserSession $userSession,
18+
) {
19+
}
20+
21+
public function initialize(\Sabre\DAV\Server $server): void {
22+
$server->on('afterMethod:*', [$this, 'afterMethod']);
23+
}
24+
25+
/**
26+
* Add the request id as a header in the response
27+
*
28+
* @param RequestInterface $request request
29+
* @param ResponseInterface $response response
30+
*/
31+
public function afterMethod(RequestInterface $request, ResponseInterface $response): void {
32+
if ($user = $this->userSession->getUser()) {
33+
$response->setHeader('X-User-Id', $user->getUID());
34+
}
35+
}
36+
}

apps/dav/lib/Server.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
use OCA\DAV\Connector\Sabre\RequestIdHeaderPlugin;
4949
use OCA\DAV\Connector\Sabre\SharesPlugin;
5050
use OCA\DAV\Connector\Sabre\TagsPlugin;
51+
use OCA\DAV\Connector\Sabre\UserIdHeaderPlugin;
5152
use OCA\DAV\Connector\Sabre\ZipFolderPlugin;
5253
use OCA\DAV\DAV\CustomPropertiesBackend;
5354
use OCA\DAV\DAV\PublicAuth;

0 commit comments

Comments
 (0)