diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2021-01-22 14:09:37 +0100 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2021-01-22 14:09:37 +0100 |
commit | 99d525eb36d8e3e14dbf72f5fb66b8554dce357c (patch) | |
tree | 28ff363dba6e0e54d8fe3c2c46457fcee8a8ca85 | |
parent | b28cea626857a6ffa458558c9e45d451ac6ec9a2 (diff) | |
download | nextcloud-server-99d525eb36d8e3e14dbf72f5fb66b8554dce357c.tar.gz nextcloud-server-99d525eb36d8e3e14dbf72f5fb66b8554dce357c.zip |
Convert 2FA token type to string
The IConfig service is documented to handle its data as strings, hence
this changes the code a bit to ensure we store keys as string and
convert them back when reading.
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r-- | lib/private/Authentication/TwoFactorAuth/Manager.php | 6 | ||||
-rw-r--r-- | tests/lib/Authentication/TwoFactorAuth/ManagerTest.php | 10 |
2 files changed, 8 insertions, 8 deletions
diff --git a/lib/private/Authentication/TwoFactorAuth/Manager.php b/lib/private/Authentication/TwoFactorAuth/Manager.php index 0a60606ad65..d95cc8b1ebf 100644 --- a/lib/private/Authentication/TwoFactorAuth/Manager.php +++ b/lib/private/Authentication/TwoFactorAuth/Manager.php @@ -339,7 +339,7 @@ class Manager { $tokenId = $token->getId(); $tokensNeeding2FA = $this->config->getUserKeys($user->getUID(), 'login_token_2fa'); - if (!\in_array($tokenId, $tokensNeeding2FA, true)) { + if (!\in_array((string) $tokenId, $tokensNeeding2FA, true)) { $this->session->set(self::SESSION_UID_DONE, $user->getUID()); return false; } @@ -376,14 +376,14 @@ class Manager { $id = $this->session->getId(); $token = $this->tokenProvider->getToken($id); - $this->config->setUserValue($user->getUID(), 'login_token_2fa', $token->getId(), $this->timeFactory->getTime()); + $this->config->setUserValue($user->getUID(), 'login_token_2fa', (string) $token->getId(), $this->timeFactory->getTime()); } public function clearTwoFactorPending(string $userId) { $tokensNeeding2FA = $this->config->getUserKeys($userId, 'login_token_2fa'); foreach ($tokensNeeding2FA as $tokenId) { - $this->tokenProvider->invalidateTokenById($userId, $tokenId); + $this->tokenProvider->invalidateTokenById($userId, (int)$tokenId); } } } diff --git a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php index c93b625f61a..a04e0f05f9d 100644 --- a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php +++ b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php @@ -420,7 +420,7 @@ class ManagerTest extends TestCase { ->willReturn(42); $this->config->expects($this->once()) ->method('deleteUserValue') - ->with('jos', 'login_token_2fa', 42); + ->with('jos', 'login_token_2fa', '42'); $result = $this->manager->verifyChallenge('email', $this->user, $challenge); @@ -515,7 +515,7 @@ class ManagerTest extends TestCase { $this->config->method('getUserKeys') ->with('user', 'login_token_2fa') ->willReturn([ - 42 + '42' ]); $manager = $this->getMockBuilder(Manager::class) @@ -588,7 +588,7 @@ class ManagerTest extends TestCase { ->willReturn(1337); $this->config->method('setUserValue') - ->with('ferdinand', 'login_token_2fa', 42, 1337); + ->with('ferdinand', 'login_token_2fa', '42', '1337'); $this->manager->prepareTwoFactorLogin($this->user, true); @@ -618,7 +618,7 @@ class ManagerTest extends TestCase { ->willReturn(1337); $this->config->method('setUserValue') - ->with('ferdinand', 'login_token_2fa', 42, 1337); + ->with('ferdinand', 'login_token_2fa', '42', '1337'); $this->manager->prepareTwoFactorLogin($this->user, false); } @@ -666,7 +666,7 @@ class ManagerTest extends TestCase { $this->config->method('getUserKeys') ->with('user', 'login_token_2fa') ->willReturn([ - 42, 43, 44 + '42', '43', '44' ]); $this->session->expects($this->once()) |