Fixed logging in users that no longer exist

This commit is contained in:
Marcin Kurczewski 2014-09-05 09:37:53 +02:00
parent de31770c87
commit 7a8badd2ed
3 changed files with 9 additions and 0 deletions

View file

@ -18,4 +18,9 @@ class TokenDao extends AbstractDao
{
$this->collection->remove(['name' => $tokenName]);
}
public function deleteByAdditionalData($additionalData)
{
$this->collection->remove(['additionalData' => $additionalData]);
}
}

View file

@ -74,6 +74,8 @@ class AuthService
$this->loginToken = $loginToken;
$this->loggedInUser = $this->userDao->getById($loginToken->additionalData);
if (!$this->loggedInUser)
throw new \Exception('User was deleted.');
$this->updateLoginTime($this->loggedInUser);
if (!$this->loggedInUser)
@ -133,6 +135,7 @@ class AuthService
$loginToken->name = hash('sha256', $user->name . '/' . microtime(true));
$loginToken->additionalData = $user->id;
$loginToken->purpose = \Szurubooru\Entities\Token::PURPOSE_LOGIN;
$this->tokenDao->deleteByAdditionalData($loginToken->additionalData);
$this->tokenDao->save($loginToken);
return $loginToken;
}

View file

@ -51,6 +51,7 @@ class AuthServiceTest extends \Szurubooru\Tests\AbstractTestCase
$testUser->name = 'dummy';
$testUser->passwordHash = 'hash';
$this->userDaoMock->expects($this->once())->method('getByName')->willReturn($testUser);
$this->tokenDaoMock->expects($this->once())->method('deleteByAdditionalData')->with($testUser->id);
$authService = $this->getAuthService();
$authService->loginFromCredentials('dummy', 'godzilla');