summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2021-01-22 14:09:37 +0100
committerChristoph Wurst <christoph@winzerhof-wurst.at>2021-01-22 14:09:37 +0100
commit99d525eb36d8e3e14dbf72f5fb66b8554dce357c (patch)
tree28ff363dba6e0e54d8fe3c2c46457fcee8a8ca85
parentb28cea626857a6ffa458558c9e45d451ac6ec9a2 (diff)
downloadnextcloud-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.php6
-rw-r--r--tests/lib/Authentication/TwoFactorAuth/ManagerTest.php10
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())