Fixed logging in users that no longer exist
This commit is contained in:
parent
de31770c87
commit
7a8badd2ed
3 changed files with 9 additions and 0 deletions
|
@ -18,4 +18,9 @@ class TokenDao extends AbstractDao
|
||||||
{
|
{
|
||||||
$this->collection->remove(['name' => $tokenName]);
|
$this->collection->remove(['name' => $tokenName]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function deleteByAdditionalData($additionalData)
|
||||||
|
{
|
||||||
|
$this->collection->remove(['additionalData' => $additionalData]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,8 @@ class AuthService
|
||||||
|
|
||||||
$this->loginToken = $loginToken;
|
$this->loginToken = $loginToken;
|
||||||
$this->loggedInUser = $this->userDao->getById($loginToken->additionalData);
|
$this->loggedInUser = $this->userDao->getById($loginToken->additionalData);
|
||||||
|
if (!$this->loggedInUser)
|
||||||
|
throw new \Exception('User was deleted.');
|
||||||
$this->updateLoginTime($this->loggedInUser);
|
$this->updateLoginTime($this->loggedInUser);
|
||||||
|
|
||||||
if (!$this->loggedInUser)
|
if (!$this->loggedInUser)
|
||||||
|
@ -133,6 +135,7 @@ class AuthService
|
||||||
$loginToken->name = hash('sha256', $user->name . '/' . microtime(true));
|
$loginToken->name = hash('sha256', $user->name . '/' . microtime(true));
|
||||||
$loginToken->additionalData = $user->id;
|
$loginToken->additionalData = $user->id;
|
||||||
$loginToken->purpose = \Szurubooru\Entities\Token::PURPOSE_LOGIN;
|
$loginToken->purpose = \Szurubooru\Entities\Token::PURPOSE_LOGIN;
|
||||||
|
$this->tokenDao->deleteByAdditionalData($loginToken->additionalData);
|
||||||
$this->tokenDao->save($loginToken);
|
$this->tokenDao->save($loginToken);
|
||||||
return $loginToken;
|
return $loginToken;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ class AuthServiceTest extends \Szurubooru\Tests\AbstractTestCase
|
||||||
$testUser->name = 'dummy';
|
$testUser->name = 'dummy';
|
||||||
$testUser->passwordHash = 'hash';
|
$testUser->passwordHash = 'hash';
|
||||||
$this->userDaoMock->expects($this->once())->method('getByName')->willReturn($testUser);
|
$this->userDaoMock->expects($this->once())->method('getByName')->willReturn($testUser);
|
||||||
|
$this->tokenDaoMock->expects($this->once())->method('deleteByAdditionalData')->with($testUser->id);
|
||||||
|
|
||||||
$authService = $this->getAuthService();
|
$authService = $this->getAuthService();
|
||||||
$authService->loginFromCredentials('dummy', 'godzilla');
|
$authService->loginFromCredentials('dummy', 'godzilla');
|
||||||
|
|
Loading…
Reference in a new issue