diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2020-08-28 16:11:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-28 16:11:46 +0200 |
commit | 7b8364e001119aff43a236f2941da0c405c21f29 (patch) | |
tree | b5b92fa00a480204bb942451bae80cc3dd084fac | |
parent | 286bf2b84ffda4c5878026b28aa2bdd0ef75b54a (diff) | |
parent | 2c8e7912f30df1d3f2d1be97eba52ebf3761cf26 (diff) | |
download | nextcloud-server-7b8364e001119aff43a236f2941da0c405c21f29.tar.gz nextcloud-server-7b8364e001119aff43a236f2941da0c405c21f29.zip |
Merge pull request #21288 from lmamane/master
Return correct loginname in credentials
-rw-r--r-- | lib/private/Authentication/LoginCredentials/Store.php | 2 | ||||
-rw-r--r-- | lib/private/Server.php | 4 | ||||
-rw-r--r-- | lib/private/User/Session.php | 4 | ||||
-rw-r--r-- | lib/public/User/Events/PostLoginEvent.php | 16 | ||||
-rw-r--r-- | tests/lib/Authentication/LoginCredentials/StoreTest.php | 7 |
5 files changed, 25 insertions, 8 deletions
diff --git a/lib/private/Authentication/LoginCredentials/Store.php b/lib/private/Authentication/LoginCredentials/Store.php index f4bedd88a18..6dd7dc3fb73 100644 --- a/lib/private/Authentication/LoginCredentials/Store.php +++ b/lib/private/Authentication/LoginCredentials/Store.php @@ -112,7 +112,7 @@ class Store implements IStore { if ($trySession && $this->session->exists('login_credentials')) { $creds = json_decode($this->session->get('login_credentials')); - return new Credentials($creds->uid, $creds->uid, $creds->password); + return new Credentials($creds->uid, $creds->loginName, $creds->password); } // If we reach this line, an exception was thrown. diff --git a/lib/private/Server.php b/lib/private/Server.php index 49eff9a185c..a83376e5eae 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -565,9 +565,9 @@ class Server extends ServerContainer implements IServerContainer { $dispatcher = $this->query(IEventDispatcher::class); $dispatcher->dispatchTyped(new BeforeUserLoggedInEvent($uid, $password)); }); - $userSession->listen('\OC\User', 'postLogin', function ($user, $password, $isTokenLogin) { + $userSession->listen('\OC\User', 'postLogin', function ($user, $loginName, $password, $isTokenLogin) { /** @var \OC\User\User $user */ - \OC_Hook::emit('OC_User', 'post_login', ['run' => true, 'uid' => $user->getUID(), 'password' => $password, 'isTokenLogin' => $isTokenLogin]); + \OC_Hook::emit('OC_User', 'post_login', ['run' => true, 'uid' => $user->getUID(), 'loginName' => $loginName, 'password' => $password, 'isTokenLogin' => $isTokenLogin]); /** @var IEventDispatcher $dispatcher */ $dispatcher = $this->query(IEventDispatcher::class); diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php index 3996869c692..176e384bcb6 100644 --- a/lib/private/User/Session.php +++ b/lib/private/User/Session.php @@ -80,7 +80,7 @@ use Symfony\Component\EventDispatcher\GenericEvent; * - preUnassignedUserId(string $uid) * - postUnassignedUserId(string $uid) * - preLogin(string $user, string $password) - * - postLogin(\OC\User\User $user, string $password) + * - postLogin(\OC\User\User $user, string $loginName, string $password, boolean $isTokenLogin) * - preRememberedLogin(string $uid) * - postRememberedLogin(\OC\User\User $user) * - logout() @@ -400,11 +400,13 @@ class Session implements IUserSession, Emitter { $this->dispatcher->dispatchTyped(new PostLoginEvent( $user, + $loginDetails['loginName'], $loginDetails['password'], $isToken )); $this->manager->emit('\OC\User', 'postLogin', [ $user, + $loginDetails['loginName'], $loginDetails['password'], $isToken, ]); diff --git a/lib/public/User/Events/PostLoginEvent.php b/lib/public/User/Events/PostLoginEvent.php index 15772bfef17..76d9a70aac8 100644 --- a/lib/public/User/Events/PostLoginEvent.php +++ b/lib/public/User/Events/PostLoginEvent.php @@ -38,6 +38,12 @@ class PostLoginEvent extends Event { /** @var IUser */ private $user; + /** + * @since 20.0.0 + * @var string + */ + private $loginName; + /** @var string */ private $password; @@ -47,9 +53,10 @@ class PostLoginEvent extends Event { /** * @since 18.0.0 */ - public function __construct(IUser $user, string $password, bool $isTokenLogin) { + public function __construct(IUser $user, string $loginName, string $password, bool $isTokenLogin) { parent::__construct(); $this->user = $user; + $this->loginName = $loginName; $this->password = $password; $this->isTokenLogin = $isTokenLogin; } @@ -62,6 +69,13 @@ class PostLoginEvent extends Event { } /** + * @since 20.0.0 + */ + public function getLoginName(): string { + return $this->loginName; + } + + /** * @since 18.0.0 */ public function getPassword(): string { diff --git a/tests/lib/Authentication/LoginCredentials/StoreTest.php b/tests/lib/Authentication/LoginCredentials/StoreTest.php index ea490b76b8a..67cb0a18297 100644 --- a/tests/lib/Authentication/LoginCredentials/StoreTest.php +++ b/tests/lib/Authentication/LoginCredentials/StoreTest.php @@ -141,7 +141,8 @@ class StoreTest extends TestCase { } public function testGetLoginCredentialsInvalidTokenLoginCredentials() { - $uid = 'user987'; + $uid = 'id987'; + $user = 'user987'; $password = '7389374'; $this->session->expects($this->once()) @@ -158,8 +159,8 @@ class StoreTest extends TestCase { $this->session->expects($this->once()) ->method('get') ->with($this->equalTo('login_credentials')) - ->willReturn('{"run":true,"uid":"user987","password":"7389374"}'); - $expected = new Credentials('user987', 'user987', '7389374'); + ->willReturn('{"run":true,"uid":"id987","loginName":"user987","password":"7389374"}'); + $expected = new Credentials($uid, $user, $password); $actual = $this->store->getLoginCredentials(); |