From f413e80fedad5357723071983fc927a411b253dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 19 Mar 2024 09:31:00 +0100 Subject: [PATCH 1/3] fix: Do not use incognito mode for direct editing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- lib/private/DirectEditing/Manager.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/private/DirectEditing/Manager.php b/lib/private/DirectEditing/Manager.php index d1be1f50330c9..a527dcd6c9edb 100644 --- a/lib/private/DirectEditing/Manager.php +++ b/lib/private/DirectEditing/Manager.php @@ -272,13 +272,11 @@ public function accessToken(string $token): bool { } public function invokeTokenScope($userId): void { - \OC_User::setIncognitoMode(true); \OC_User::setUserId($userId); } public function revertTokenScope(): void { $this->userSession->setUser(null); - \OC_User::setIncognitoMode(false); } public function createToken($editorId, File $file, string $filePath, IShare $share = null): string { From 1c75c5f1e098600c414915f22304436f25c974f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 19 Mar 2024 11:12:03 +0100 Subject: [PATCH 2/3] fix: Implement option to temporarily set the user session MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/files_external/lib/Migration/DummyUserSession.php | 9 +++++---- lib/private/User/Session.php | 9 +++++++++ lib/private/legacy/OC_User.php | 3 ++- lib/public/IUserSession.php | 8 ++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/apps/files_external/lib/Migration/DummyUserSession.php b/apps/files_external/lib/Migration/DummyUserSession.php index e1b2b500188c5..ce987b3c575f8 100644 --- a/apps/files_external/lib/Migration/DummyUserSession.php +++ b/apps/files_external/lib/Migration/DummyUserSession.php @@ -29,10 +29,7 @@ class DummyUserSession implements IUserSession { - /** - * @var IUser - */ - private $user; + private ?IUser $user = null; public function login($uid, $password) { } @@ -44,6 +41,10 @@ public function setUser($user) { $this->user = $user; } + public function setVolatileActiveUser(?IUser $user): void { + $this->user = $user; + } + public function getUser() { return $this->user; } diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php index dff3cefd0b9f8..c5a00aedcc6d0 100644 --- a/lib/private/User/Session.php +++ b/lib/private/User/Session.php @@ -182,6 +182,15 @@ public function setUser($user) { $this->activeUser = $user; } + /** + * Temporarily set the currently active user without persisting in the session + * + * @param IUser|null $user + */ + public function setVolatileActiveUser(?IUser $user): void { + $this->activeUser = $user; + } + /** * get the current active user * diff --git a/lib/private/legacy/OC_User.php b/lib/private/legacy/OC_User.php index 3d95881498869..51bf0fd6049e0 100644 --- a/lib/private/legacy/OC_User.php +++ b/lib/private/legacy/OC_User.php @@ -41,6 +41,7 @@ use OCP\IGroupManager; use OCP\IUser; use OCP\IUserManager; +use OCP\IUserSession; use OCP\Server; use OCP\User\Events\BeforeUserLoggedInEvent; use OCP\User\Events\UserLoggedInEvent; @@ -349,7 +350,7 @@ public static function isAdminUser($uid) { * @return string|false uid or false */ public static function getUser() { - $uid = \OC::$server->getSession() ? \OC::$server->getSession()->get('user_id') : null; + $uid = Server::get(IUserSession::class)->getUser()?->getUID(); if (!is_null($uid) && self::$incognitoMode === false) { return $uid; } else { diff --git a/lib/public/IUserSession.php b/lib/public/IUserSession.php index 7bc37cc67c6a1..dc6094550bc63 100644 --- a/lib/public/IUserSession.php +++ b/lib/public/IUserSession.php @@ -63,6 +63,14 @@ public function logout(); */ public function setUser($user); + /** + * Temporarily set the currently active user without persisting in the session + * + * @param IUser|null $user + * @since 29.0.0 + */ + public function setVolatileActiveUser(?IUser $user): void; + /** * get the current active user * From be5d40e3e277aac5fc6939922c8b18094c20c9b8 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 22 Mar 2024 01:04:48 +0100 Subject: [PATCH 3/3] fix(logging): Restore the option to log with debug level Signed-off-by: Joas Schilling --- lib/private/legacy/OC_User.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/private/legacy/OC_User.php b/lib/private/legacy/OC_User.php index 51bf0fd6049e0..1174c492fef13 100644 --- a/lib/private/legacy/OC_User.php +++ b/lib/private/legacy/OC_User.php @@ -39,9 +39,9 @@ use OC\User\LoginException; use OCP\EventDispatcher\IEventDispatcher; use OCP\IGroupManager; +use OCP\ISession; use OCP\IUser; use OCP\IUserManager; -use OCP\IUserSession; use OCP\Server; use OCP\User\Events\BeforeUserLoggedInEvent; use OCP\User\Events\UserLoggedInEvent; @@ -350,7 +350,7 @@ public static function isAdminUser($uid) { * @return string|false uid or false */ public static function getUser() { - $uid = Server::get(IUserSession::class)->getUser()?->getUID(); + $uid = Server::get(ISession::class)?->get('user_id'); if (!is_null($uid) && self::$incognitoMode === false) { return $uid; } else {