]> source.dussan.org Git - nextcloud-server.git/commitdiff
Cancel PR #37405, remove regression code
authorGaspard d'Hautefeuille <github@dhautefeuille.eu>
Tue, 2 Jan 2024 08:52:46 +0000 (10:52 +0200)
committerSimon L <szaimen@e.mail.de>
Fri, 5 Jan 2024 03:20:26 +0000 (04:20 +0100)
Signed-off-by: Gaspard d'Hautefeuille <github@dhautefeuille.eu>
core/Controller/LoginController.php
tests/Core/Controller/LoginControllerTest.php

index db3e8a64d64c45741a5efc3c7f9616649b5d86fc..fe2a16ec4d38305f2cffc590ba0a57362e25bd4c 100644 (file)
@@ -35,6 +35,7 @@ declare(strict_types=1);
  */
 namespace OC\Core\Controller;
 
+use OC\AppFramework\Http\Request;
 use OC\Authentication\Login\Chain;
 use OC\Authentication\Login\LoginData;
 use OC\Authentication\WebAuthn\Manager as WebAuthnManager;
@@ -105,8 +106,7 @@ class LoginController extends Controller {
                $this->session->set('clearingExecutionContexts', '1');
                $this->session->close();
 
-               if ($this->request->getServerProtocol() === 'https') {
-                       // This feature is available only in secure contexts
+               if (!$this->request->isUserAgent([Request::USER_AGENT_CHROME, Request::USER_AGENT_ANDROID_MOBILE_CHROME])) {
                        $response->addHeader('Clear-Site-Data', '"cache", "storage"');
                }
 
index 7d82e256c1751d945fcb573c53be97ed817342c7..b427972e1adfde35385f1ca8c7bfd922f97f07e0 100644 (file)
@@ -143,8 +143,9 @@ class LoginControllerTest extends TestCase {
                        ->with('nc_token')
                        ->willReturn(null);
                $this->request
-                       ->method('getServerProtocol')
-                       ->willReturn('https');
+                       ->expects($this->once())
+                       ->method('isUserAgent')
+                       ->willReturn(false);
                $this->config
                        ->expects($this->never())
                        ->method('deleteUserValue');
@@ -159,6 +160,26 @@ class LoginControllerTest extends TestCase {
                $this->assertEquals($expected, $this->loginController->logout());
        }
 
+       public function testLogoutNoClearSiteData() {
+               $this->request
+                       ->expects($this->once())
+                       ->method('getCookie')
+                       ->with('nc_token')
+                       ->willReturn(null);
+               $this->request
+                       ->expects($this->once())
+                       ->method('isUserAgent')
+                       ->willReturn(true);
+               $this->urlGenerator
+                       ->expects($this->once())
+                       ->method('linkToRouteAbsolute')
+                       ->with('core.login.showLoginForm')
+                       ->willReturn('/login');
+
+               $expected = new RedirectResponse('/login');
+               $this->assertEquals($expected, $this->loginController->logout());
+       }
+
        public function testLogoutWithToken() {
                $this->request
                        ->expects($this->once())
@@ -167,8 +188,8 @@ class LoginControllerTest extends TestCase {
                        ->willReturn('MyLoginToken');
                $this->request
                        ->expects($this->once())
-                       ->method('getServerProtocol')
-                       ->willReturn('https');
+                       ->method('isUserAgent')
+                       ->willReturn(false);
                $user = $this->createMock(IUser::class);
                $user
                        ->expects($this->once())