From f927fa90b868e8b7c19f98c65414a5b161b26c15 Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Tue, 8 Nov 2022 15:59:37 +0100 Subject: [PATCH 1/2] Set IUserSession user in SessionController if available fixes #2821 Signed-off-by: Marcel Klehr --- lib/Controller/SessionController.php | 35 +++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/lib/Controller/SessionController.php b/lib/Controller/SessionController.php index 0a294106874..e14c1ef705e 100644 --- a/lib/Controller/SessionController.php +++ b/lib/Controller/SessionController.php @@ -26,10 +26,13 @@ namespace OCA\Text\Controller; use OCA\Text\Service\ApiService; +use OCA\Text\Service\SessionService; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\Response; use OCP\IRequest; +use OCP\IUserManager; +use OCP\IUserSession; class SessionController extends Controller { @@ -38,9 +41,28 @@ class SessionController extends Controller { */ private $apiService; - public function __construct(string $appName, IRequest $request, ApiService $apiService) { + /** + * @var SessionService + */ + private $sessionService; + + /** + * @var IUserManager + */ + private $userManager; + + /** + * @var IUserSession + */ + private $userSession; + + + public function __construct(string $appName, IRequest $request, ApiService $apiService, SessionService $sessionService, IUserManager $userManager, IUserSession $userSession) { parent::__construct($appName, $request); $this->apiService = $apiService; + $this->sessionService = $sessionService; + $this->userManager = $userManager; + $this->userSession = $userSession; } /** @@ -71,6 +93,7 @@ public function close(int $documentId, int $sessionId, string $sessionToken): Da * @PublicPage */ public function push(int $documentId, int $sessionId, string $sessionToken, int $version, array $steps): DataResponse { + $this->loginSessionUser($documentId, $sessionId, $sessionToken); return $this->apiService->push($documentId, $sessionId, $sessionToken, $version, $steps); } @@ -79,6 +102,16 @@ public function push(int $documentId, int $sessionId, string $sessionToken, int * @PublicPage */ public function sync(int $documentId, int $sessionId, string $sessionToken, int $version = 0, string $autosaveContent = null, bool $force = false, bool $manualSave = false): DataResponse { + $this->loginSessionUser($documentId, $sessionId, $sessionToken); return $this->apiService->sync($documentId, $sessionId, $sessionToken, $version, $autosaveContent, $force, $manualSave); } + + private function loginSessionUser(int $documentId, int $sessionId, string $sessionToken) { + $currentSession = $this->sessionService->getSession($documentId, $sessionId, $sessionToken); + $user = $this->userManager->get($currentSession->getUserId()); + if ($user !== null) { + $this->userSession->setUser($user); + } + } + } From 7e41b28a10a7b33ea06df68e5648ec3cfacf53aa Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 9 Nov 2022 14:21:57 +0100 Subject: [PATCH 2/2] cs:fix Signed-off-by: Marcel Klehr --- lib/Controller/SessionController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/Controller/SessionController.php b/lib/Controller/SessionController.php index e14c1ef705e..92f64721046 100644 --- a/lib/Controller/SessionController.php +++ b/lib/Controller/SessionController.php @@ -113,5 +113,4 @@ private function loginSessionUser(int $documentId, int $sessionId, string $sessi $this->userSession->setUser($user); } } - }