Skip to content

Commit b6d1ec4

Browse files
Merge pull request #3356 from nextcloud/fix/no-user-in-file-put-event
DirectEditing: Set session user for DirectSession editing
2 parents 0a233be + ed4e4fd commit b6d1ec4

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

lib/Controller/DirectSessionController.php

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,21 @@
5353
use OCP\DirectEditing\IManager;
5454
use OCP\AppFramework\Http\DataResponse;
5555
use OCP\IRequest;
56-
use OCP\Share\IShare;
56+
use OCP\IUserManager;
57+
use OCP\IUserSession;
5758

5859
class DirectSessionController extends Controller {
59-
private IShare $share;
6060
private ApiService $apiService;
6161
private IManager $directManager;
62+
private IUserSession $userSession;
63+
private IUserManager $userManager;
6264

63-
public function __construct(string $appName, IRequest $request, ApiService $apiService, IManager $directManager) {
65+
public function __construct(string $appName, IRequest $request, ApiService $apiService, IManager $directManager, IUserSession $userSession, IUserManager $userManager) {
6466
parent::__construct($appName, $request);
6567
$this->apiService = $apiService;
6668
$this->directManager = $directManager;
69+
$this->userSession = $userSession;
70+
$this->userManager = $userManager;
6771
}
6872

6973
/**
@@ -106,6 +110,7 @@ public function close(int $documentId, int $sessionId, string $sessionToken): Da
106110
* @PublicPage
107111
*/
108112
public function push(int $documentId, int $sessionId, string $sessionToken, int $version, array $steps, string $token): DataResponse {
113+
$this->loginTokenUser($token);
109114
return $this->apiService->push($documentId, $sessionId, $sessionToken, $version, $steps, $token);
110115
}
111116

@@ -114,6 +119,7 @@ public function push(int $documentId, int $sessionId, string $sessionToken, int
114119
* @PublicPage
115120
*/
116121
public function sync(string $token, int $documentId, int $sessionId, string $sessionToken, int $version = 0, string $autosaveContent = null, bool $force = false, bool $manualSave = false): DataResponse {
122+
$this->loginTokenUser($token);
117123
return $this->apiService->sync($documentId, $sessionId, $sessionToken, $version, $autosaveContent, $force, $manualSave, $token);
118124
}
119125

@@ -124,4 +130,12 @@ public function sync(string $token, int $documentId, int $sessionId, string $ses
124130
public function updateSession(int $documentId, int $sessionId, string $sessionToken, string $guestName) {
125131
return $this->apiService->updateSession($documentId, $sessionId, $sessionToken, $guestName);
126132
}
133+
134+
private function loginTokenUser(string $token) {
135+
$tokenObject = $this->directManager->getToken($token);
136+
$user = $this->userManager->get($tokenObject->getUser());
137+
if ($user !== null) {
138+
$this->userSession->setUser($user);
139+
}
140+
}
127141
}

0 commit comments

Comments
 (0)