]> source.dussan.org Git - nextcloud-server.git/commitdiff
Convert 2FA token type to string 25275/head
authorChristoph Wurst <christoph@winzerhof-wurst.at>
Fri, 22 Jan 2021 13:09:37 +0000 (14:09 +0100)
committerChristoph Wurst <christoph@winzerhof-wurst.at>
Fri, 22 Jan 2021 13:09:37 +0000 (14:09 +0100)
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>
lib/private/Authentication/TwoFactorAuth/Manager.php
tests/lib/Authentication/TwoFactorAuth/ManagerTest.php

index 0a60606ad65cecefd8f3ff427c68cee76f521a2e..d95cc8b1ebfe8cfee91ab4b34507a2de25305fd2 100644 (file)
@@ -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);
                }
        }
 }
index c93b625f61a37530cf4ee07f86ba6b6fdf87237d..a04e0f05f9dc9dd79c614013bd157d57dd5f9890 100644 (file)
@@ -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())