1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-01 12:20:44 +02:00

Do not trigger user_login event if authentication fails

Related: #4236
This commit is contained in:
Nick Liu
2020-08-25 00:12:40 -05:00
parent 55882c75cb
commit 4fbf4a93ca
3 changed files with 25 additions and 5 deletions

View File

@@ -625,7 +625,7 @@ class userlogin
return $message;
}
define('LOGINMESSAGE', $message);
defined('LOGINMESSAGE') or define('LOGINMESSAGE', $message);
// $sql->update('online', 'user_active = 0 WHERE user_ip = "'.$this->userIP.'" LIMIT 1');

View File

@@ -1592,12 +1592,12 @@ class e_user extends e_user_model
if($this->isUser()) return false;
$userlogin = new userlogin();
$userlogin->login($uname, $upass_plain, $uauto, $uchallange, $noredirect);
$loginSuccess = $userlogin->login($uname, $upass_plain, $uauto, $uchallange, $noredirect);
$userdata = $userlogin->getUserData();
$this->setSessionData(true)->setData($userdata);
if ($loginSuccess === false) return false;
e107::getEvent()->trigger('user_login', $userdata);
return $this->isUser();

View File

@@ -388,4 +388,24 @@
$this->assertFalse($user->isUser());
$this->assertEmpty($user->getData());
}
public function testUserLoginFailureDoesNotTriggerUserLoginEvent()
{
$originalEventHandler = e107::getRegistry('core/e107/singleton/e107_event');
$mockEventHandler = $this->createMock(e107_event::class);
$mockEventHandler->expects($this->never())->method('trigger');
e107::setRegistry('core/e107/singleton/e107_event', $mockEventHandler);
try
{
$user = e107::getUser();
$user->login("e107", "DefinitelyTheWrongPassword");
e107::getEvent();
}
finally
{
e107::setRegistry('core/e107/singleton/e107_event', $originalEventHandler);
}
}
}