summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Authentication/Login/FinishRememberedLoginCommand.php8
-rw-r--r--tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php25
2 files changed, 30 insertions, 3 deletions
diff --git a/lib/private/Authentication/Login/FinishRememberedLoginCommand.php b/lib/private/Authentication/Login/FinishRememberedLoginCommand.php
index 1d33f103fdf..8f60c893ec5 100644
--- a/lib/private/Authentication/Login/FinishRememberedLoginCommand.php
+++ b/lib/private/Authentication/Login/FinishRememberedLoginCommand.php
@@ -26,18 +26,22 @@ declare(strict_types=1);
namespace OC\Authentication\Login;
use OC\User\Session;
+use OCP\IConfig;
class FinishRememberedLoginCommand extends ALoginCommand {
/** @var Session */
private $userSession;
+ /** @var IConfig */
+ private $config;
- public function __construct(Session $userSession) {
+ public function __construct(Session $userSession, IConfig $config) {
$this->userSession = $userSession;
+ $this->config = $config;
}
public function process(LoginData $loginData): LoginResult {
- if ($loginData->isRememberLogin()) {
+ if ($loginData->isRememberLogin() && $this->config->getSystemValue('auto_logout', false) === false) {
$this->userSession->createRememberMeToken($loginData->getUser());
}
diff --git a/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php b/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php
index 98df129771a..7b461219456 100644
--- a/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php
+++ b/tests/lib/Authentication/Login/FinishRememberedLoginCommandTest.php
@@ -27,20 +27,25 @@ namespace lib\Authentication\Login;
use OC\Authentication\Login\FinishRememberedLoginCommand;
use OC\User\Session;
+use OCP\IConfig;
use PHPUnit\Framework\MockObject\MockObject;
class FinishRememberedLoginCommandTest extends ALoginCommandTest {
/** @var Session|MockObject */
private $userSession;
+ /** @var IConfig|MockObject */
+ private $config;
protected function setUp(): void {
parent::setUp();
$this->userSession = $this->createMock(Session::class);
+ $this->config = $this->createMock(IConfig::class);
$this->cmd = new FinishRememberedLoginCommand(
- $this->userSession
+ $this->userSession,
+ $this->config
);
}
@@ -57,6 +62,10 @@ class FinishRememberedLoginCommandTest extends ALoginCommandTest {
public function testProcess() {
$data = $this->getLoggedInLoginData();
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('auto_logout', false)
+ ->willReturn(false);
$this->userSession->expects($this->once())
->method('createRememberMeToken')
->with($this->user);
@@ -65,4 +74,18 @@ class FinishRememberedLoginCommandTest extends ALoginCommandTest {
$this->assertTrue($result->isSuccess());
}
+
+ public function testProcessNotRemeberedLoginWithAutologout() {
+ $data = $this->getLoggedInLoginData();
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('auto_logout', false)
+ ->willReturn(true);
+ $this->userSession->expects($this->never())
+ ->method('createRememberMeToken');
+
+ $result = $this->cmd->process($data);
+
+ $this->assertTrue($result->isSuccess());
+ }
}