server = $server; $this->server->on('propFind', [$this, 'propFind']); $this->server->on('afterMethod:GET', [$this,'httpGet']); } public function propFind(PropFind $propFind, INode $node) { if (!($node instanceof ITrash)) { return; } $propFind->handle(self::TRASHBIN_FILENAME, function () use ($node) { return $node->getFilename(); }); $propFind->handle(self::TRASHBIN_ORIGINAL_LOCATION, function () use ($node) { return $node->getOriginalLocation(); }); $propFind->handle(self::TRASHBIN_TITLE, function () use ($node) { return $node->getTitle(); }); $propFind->handle(self::TRASHBIN_DELETION_TIME, function () use ($node) { return $node->getDeletionTime(); }); $propFind->handle(self::TRASHBIN_DELETED_BY_ID, function () use ($node) { return $node->getDeletedBy()?->getUID(); }); $propFind->handle(self::TRASHBIN_DELETED_BY_DISPLAY_NAME, function () use ($node) { return $node->getDeletedBy()?->getDisplayName(); }); // Pass the real filename as the DAV display name $propFind->handle(FilesPlugin::DISPLAYNAME_PROPERTYNAME, function () use ($node) { return $node->getFilename(); }); $propFind->handle(FilesPlugin::SIZE_PROPERTYNAME, function () use ($node) { return $node->getSize(); }); $propFind->handle(FilesPlugin::FILEID_PROPERTYNAME, function () use ($node) { return $node->getFileId(); }); $propFind->handle(FilesPlugin::PERMISSIONS_PROPERTYNAME, function () { return 'GD'; // read + delete }); $propFind->handle(FilesPlugin::GETETAG_PROPERTYNAME, function () use ($node) { // add fake etag, it is only needed to identify the preview image return $node->getLastModified(); }); $propFind->handle(FilesPlugin::INTERNAL_FILEID_PROPERTYNAME, function () use ($node) { // add fake etag, it is only needed to identify the preview image return $node->getFileId(); }); $propFind->handle(FilesPlugin::HAS_PREVIEW_PROPERTYNAME, function () use ($node) { return $this->previewManager->isAvailable($node->getFileInfo()); }); $propFind->handle(FilesPlugin::MOUNT_TYPE_PROPERTYNAME, function () { return ''; }); $propFind->handle(self::TRASHBIN_BACKEND, function () use ($node) { $fileInfo = $node->getFileInfo(); if (!($fileInfo instanceof ITrashItem)) { return ''; } return $fileInfo->getTrashBackend()::class; }); } /** * Set real filename on trashbin download * * @param RequestInterface $request * @param ResponseInterface $response */ public function httpGet(RequestInterface $request, ResponseInterface $response): void { $path = $request->getPath(); $node = $this->server->tree->getNodeForPath($path); if ($node instanceof ITrash) { $response->addHeader('Content-Disposition', 'attachment; filename="' . $node->getFilename() . '"'); } } } ption> Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/appframework/middleware/sessionmiddleware.php
blob: 64f0b5e5c519e5e356304412d1b73e0ad61f2838 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81