Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/text.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMarcel Klehr <mklehr@gmx.net>2022-11-04 11:41:18 +0300
committerMarcel Klehr <mklehr@gmx.net>2022-11-04 11:44:41 +0300
commit468f4e396fa2b6f5881baf87f2f48eefa3674db5 (patch)
treeb9c9a48e3dab4af1573533001d295ca2c541fda4 /lib
parent242f36a8d37f458ff58c2e869e3b05d1b3a7b259 (diff)
DirectEditing: Set session user for DirectSession editing
to have it available for the file put activities event fixes https://github.com/nextcloud/android/issues/10237 fixes #2821 Signed-off-by: Marcel Klehr <mklehr@gmx.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/Controller/DirectSessionController.php22
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/Controller/DirectSessionController.php b/lib/Controller/DirectSessionController.php
index aad732e57..ecd1a1e3c 100644
--- a/lib/Controller/DirectSessionController.php
+++ b/lib/Controller/DirectSessionController.php
@@ -53,17 +53,25 @@ use OCP\AppFramework\Http\Response;
use OCP\DirectEditing\IManager;
use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest;
+use OCP\IUserManager;
+use OCP\IUserSession;
use OCP\Share\IShare;
class DirectSessionController extends Controller {
- private IShare $share;
private ApiService $apiService;
private IManager $directManager;
+ private IUserSession $userSession;
+ /**
+ * @var \OCP\IUserManager
+ */
+ private IUserManager $userManager;
- public function __construct(string $appName, IRequest $request, ApiService $apiService, IManager $directManager) {
+ public function __construct(string $appName, IRequest $request, ApiService $apiService, IManager $directManager, IUserSession $userSession, IUserManager $userManager) {
parent::__construct($appName, $request);
$this->apiService = $apiService;
$this->directManager = $directManager;
+ $this->userSession = $userSession;
+ $this->userManager = $userManager;
}
/**
@@ -106,6 +114,7 @@ class DirectSessionController extends Controller {
* @PublicPage
*/
public function push(int $documentId, int $sessionId, string $sessionToken, int $version, array $steps, string $token): DataResponse {
+ $this->loginTokenUser($token);
return $this->apiService->push($documentId, $sessionId, $sessionToken, $version, $steps, $token);
}
@@ -114,6 +123,7 @@ class DirectSessionController extends Controller {
* @PublicPage
*/
public function sync(string $token, int $documentId, int $sessionId, string $sessionToken, int $version = 0, string $autosaveContent = null, bool $force = false, bool $manualSave = false): DataResponse {
+ $this->loginTokenUser($token);
return $this->apiService->sync($documentId, $sessionId, $sessionToken, $version, $autosaveContent, $force, $manualSave, $token);
}
@@ -124,4 +134,12 @@ class DirectSessionController extends Controller {
public function updateSession(int $documentId, int $sessionId, string $sessionToken, string $guestName) {
return $this->apiService->updateSession($documentId, $sessionId, $sessionToken, $guestName);
}
+
+ private function loginTokenUser(string $token) {
+ $tokenObject = $this->directManager->getToken($token);
+ $user = $this->userManager->get($tokenObject->getUser());
+ if ($user !== null) {
+ $this->userSession->setUser($user);
+ }
+ }
}