summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2020-08-28 16:11:46 +0200
committerGitHub <noreply@github.com>2020-08-28 16:11:46 +0200
commit7b8364e001119aff43a236f2941da0c405c21f29 (patch)
treeb5b92fa00a480204bb942451bae80cc3dd084fac
parent286bf2b84ffda4c5878026b28aa2bdd0ef75b54a (diff)
parent2c8e7912f30df1d3f2d1be97eba52ebf3761cf26 (diff)
downloadnextcloud-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.php2
-rw-r--r--lib/private/Server.php4
-rw-r--r--lib/private/User/Session.php4
-rw-r--r--lib/public/User/Events/PostLoginEvent.php16
-rw-r--r--tests/lib/Authentication/LoginCredentials/StoreTest.php7
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();