Skip to content

Commit 42180a2

Browse files
authored
Merge pull request #44295 from nextcloud/fix/direct-edit-incognito
Allow injecting the user temporarily for direct editing
2 parents 67b9b34 + e330efe commit 42180a2

File tree

5 files changed

+24
-7
lines changed

5 files changed

+24
-7
lines changed

apps/files_external/lib/Migration/DummyUserSession.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@
2929

3030
class DummyUserSession implements IUserSession {
3131

32-
/**
33-
* @var IUser
34-
*/
35-
private $user;
32+
private ?IUser $user = null;
3633

3734
public function login($uid, $password) {
3835
}
@@ -44,6 +41,10 @@ public function setUser($user) {
4441
$this->user = $user;
4542
}
4643

44+
public function setVolatileActiveUser(?IUser $user): void {
45+
$this->user = $user;
46+
}
47+
4748
public function getUser() {
4849
return $this->user;
4950
}

lib/private/DirectEditing/Manager.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,11 @@ public function accessToken(string $token): bool {
272272
}
273273

274274
public function invokeTokenScope($userId): void {
275-
\OC_User::setIncognitoMode(true);
276275
\OC_User::setUserId($userId);
277276
}
278277

279278
public function revertTokenScope(): void {
280279
$this->userSession->setUser(null);
281-
\OC_User::setIncognitoMode(false);
282280
}
283281

284282
public function createToken($editorId, File $file, string $filePath, IShare $share = null): string {

lib/private/User/Session.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,15 @@ public function setUser($user) {
211211
$this->activeUser = $user;
212212
}
213213

214+
/**
215+
* Temporarily set the currently active user without persisting in the session
216+
*
217+
* @param IUser|null $user
218+
*/
219+
public function setVolatileActiveUser(?IUser $user): void {
220+
$this->activeUser = $user;
221+
}
222+
214223
/**
215224
* get the current active user
216225
*

lib/private/legacy/OC_User.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
use OCP\IGroupManager;
4242
use OCP\IUser;
4343
use OCP\IUserManager;
44+
use OCP\IUserSession;
4445
use OCP\Server;
4546
use OCP\User\Events\BeforeUserLoggedInEvent;
4647
use OCP\User\Events\UserLoggedInEvent;
@@ -338,7 +339,7 @@ public static function isAdminUser($uid) {
338339
* @return string|false uid or false
339340
*/
340341
public static function getUser() {
341-
$uid = \OC::$server->getSession() ? \OC::$server->getSession()->get('user_id') : null;
342+
$uid = Server::get(IUserSession::class)->getUser()?->getUID();
342343
if (!is_null($uid) && self::$incognitoMode === false) {
343344
return $uid;
344345
} else {

lib/public/IUserSession.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@ public function logout();
6363
*/
6464
public function setUser($user);
6565

66+
/**
67+
* Temporarily set the currently active user without persisting in the session
68+
*
69+
* @param IUser|null $user
70+
* @since 29.0.0
71+
*/
72+
public function setVolatileActiveUser(?IUser $user): void;
73+
6674
/**
6775
* get the current active user
6876
*

0 commit comments

Comments
 (0)