Merge pull request #21288 from lmamane/master

Return correct loginname in credentials
This commit is contained in:
Roeland Jago Douma 2020-08-28 16:11:46 +02:00 committed by GitHub
commit 7b8364e001
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 8 deletions

View File

@ -112,7 +112,7 @@ class Store implements IStore {
if ($trySession && $this->session->exists('login_credentials')) { if ($trySession && $this->session->exists('login_credentials')) {
$creds = json_decode($this->session->get('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. // If we reach this line, an exception was thrown.

View File

@ -565,9 +565,9 @@ class Server extends ServerContainer implements IServerContainer {
$dispatcher = $this->query(IEventDispatcher::class); $dispatcher = $this->query(IEventDispatcher::class);
$dispatcher->dispatchTyped(new BeforeUserLoggedInEvent($uid, $password)); $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 */ /** @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 */ /** @var IEventDispatcher $dispatcher */
$dispatcher = $this->query(IEventDispatcher::class); $dispatcher = $this->query(IEventDispatcher::class);

View File

@ -80,7 +80,7 @@ use Symfony\Component\EventDispatcher\GenericEvent;
* - preUnassignedUserId(string $uid) * - preUnassignedUserId(string $uid)
* - postUnassignedUserId(string $uid) * - postUnassignedUserId(string $uid)
* - preLogin(string $user, string $password) * - 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) * - preRememberedLogin(string $uid)
* - postRememberedLogin(\OC\User\User $user) * - postRememberedLogin(\OC\User\User $user)
* - logout() * - logout()
@ -400,11 +400,13 @@ class Session implements IUserSession, Emitter {
$this->dispatcher->dispatchTyped(new PostLoginEvent( $this->dispatcher->dispatchTyped(new PostLoginEvent(
$user, $user,
$loginDetails['loginName'],
$loginDetails['password'], $loginDetails['password'],
$isToken $isToken
)); ));
$this->manager->emit('\OC\User', 'postLogin', [ $this->manager->emit('\OC\User', 'postLogin', [
$user, $user,
$loginDetails['loginName'],
$loginDetails['password'], $loginDetails['password'],
$isToken, $isToken,
]); ]);

View File

@ -38,6 +38,12 @@ class PostLoginEvent extends Event {
/** @var IUser */ /** @var IUser */
private $user; private $user;
/**
* @since 20.0.0
* @var string
*/
private $loginName;
/** @var string */ /** @var string */
private $password; private $password;
@ -47,9 +53,10 @@ class PostLoginEvent extends Event {
/** /**
* @since 18.0.0 * @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(); parent::__construct();
$this->user = $user; $this->user = $user;
$this->loginName = $loginName;
$this->password = $password; $this->password = $password;
$this->isTokenLogin = $isTokenLogin; $this->isTokenLogin = $isTokenLogin;
} }
@ -61,6 +68,13 @@ class PostLoginEvent extends Event {
return $this->user; return $this->user;
} }
/**
* @since 20.0.0
*/
public function getLoginName(): string {
return $this->loginName;
}
/** /**
* @since 18.0.0 * @since 18.0.0
*/ */

View File

@ -141,7 +141,8 @@ class StoreTest extends TestCase {
} }
public function testGetLoginCredentialsInvalidTokenLoginCredentials() { public function testGetLoginCredentialsInvalidTokenLoginCredentials() {
$uid = 'user987'; $uid = 'id987';
$user = 'user987';
$password = '7389374'; $password = '7389374';
$this->session->expects($this->once()) $this->session->expects($this->once())
@ -158,8 +159,8 @@ class StoreTest extends TestCase {
$this->session->expects($this->once()) $this->session->expects($this->once())
->method('get') ->method('get')
->with($this->equalTo('login_credentials')) ->with($this->equalTo('login_credentials'))
->willReturn('{"run":true,"uid":"user987","password":"7389374"}'); ->willReturn('{"run":true,"uid":"id987","loginName":"user987","password":"7389374"}');
$expected = new Credentials('user987', 'user987', '7389374'); $expected = new Credentials($uid, $user, $password);
$actual = $this->store->getLoginCredentials(); $actual = $this->store->getLoginCredentials();