]> source.dussan.org Git - nextcloud-server.git/commitdiff
use the loginname to verify the old password in user password changes 21106/head
authorArthur Schiwon <blizzz@arthur-schiwon.de>
Mon, 25 May 2020 21:00:00 +0000 (23:00 +0200)
committerArthur Schiwon <blizzz@arthur-schiwon.de>
Tue, 26 May 2020 14:53:25 +0000 (16:53 +0200)
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
apps/settings/lib/Controller/ChangePasswordController.php
tests/Core/Controller/ChangePasswordControllerTest.php

index 439731b22eb315dee0660171d3adcce235ae5d03..e6567bf9043a6f54cfa575530b4ca3c7d024874f 100644 (file)
@@ -89,8 +89,9 @@ class ChangePasswordController extends Controller {
         * @BruteForceProtection(action=changePersonalPassword)
         */
        public function changePersonalPassword(string $oldpassword = '', string $newpassword = null): JSONResponse {
+               $loginName = $this->userSession->getLoginName();
                /** @var IUser $user */
-               $user = $this->userManager->checkPassword($this->userId, $oldpassword);
+               $user = $this->userManager->checkPassword($loginName, $oldpassword);
                if ($user === false) {
                        $response = new JSONResponse([
                                'status' => 'error',
index 175628552bc622838a994b35d3a18ec39ef0613b..21a80b61063435feb2d6885c3319c47a91c56889 100644 (file)
@@ -36,6 +36,8 @@ use OCP\IUserManager;
 class ChangePasswordControllerTest extends \Test\TestCase {
        /** @var string */
        private $userId = 'currentUser';
+       /** @var string */
+       private $loginName = 'ua1337';
        /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
        private $userManager;
        /** @var Session|\PHPUnit_Framework_MockObject_MockObject */
@@ -75,9 +77,13 @@ class ChangePasswordControllerTest extends \Test\TestCase {
        }
 
        public function testChangePersonalPasswordWrongPassword() {
+               $this->userSession->expects($this->once())
+                       ->method('getLoginName')
+                       ->willReturn($this->loginName);
+
                $this->userManager->expects($this->once())
                        ->method('checkPassword')
-                       ->with($this->userId, 'old')
+                       ->with($this->loginName, 'old')
                        ->willReturn(false);
 
                $expects = new JSONResponse([
@@ -93,10 +99,14 @@ class ChangePasswordControllerTest extends \Test\TestCase {
        }
 
        public function testChangePersonalPasswordCommonPassword() {
+               $this->userSession->expects($this->once())
+                       ->method('getLoginName')
+                       ->willReturn($this->loginName);
+
                $user = $this->getMockBuilder(IUser::class)->getMock();
                $this->userManager->expects($this->once())
                        ->method('checkPassword')
-                       ->with($this->userId, 'old')
+                       ->with($this->loginName, 'old')
                        ->willReturn($user);
 
                $user->expects($this->once())
@@ -116,10 +126,14 @@ class ChangePasswordControllerTest extends \Test\TestCase {
        }
 
        public function testChangePersonalPasswordNoNewPassword() {
+               $this->userSession->expects($this->once())
+                       ->method('getLoginName')
+                       ->willReturn($this->loginName);
+
                $user = $this->getMockBuilder(IUser::class)->getMock();
                $this->userManager->expects($this->once())
                        ->method('checkPassword')
-                       ->with($this->userId, 'old')
+                       ->with($this->loginName, 'old')
                        ->willReturn($user);
 
                $expects = [
@@ -132,10 +146,14 @@ class ChangePasswordControllerTest extends \Test\TestCase {
        }
 
        public function testChangePersonalPasswordCantSetPassword() {
+               $this->userSession->expects($this->once())
+                       ->method('getLoginName')
+                       ->willReturn($this->loginName);
+
                $user = $this->getMockBuilder(IUser::class)->getMock();
                $this->userManager->expects($this->once())
                        ->method('checkPassword')
-                       ->with($this->userId, 'old')
+                       ->with($this->loginName, 'old')
                        ->willReturn($user);
 
                $user->expects($this->once())
@@ -152,10 +170,14 @@ class ChangePasswordControllerTest extends \Test\TestCase {
        }
 
        public function testChangePersonalPassword() {
+               $this->userSession->expects($this->once())
+                       ->method('getLoginName')
+                       ->willReturn($this->loginName);
+
                $user = $this->getMockBuilder(IUser::class)->getMock();
                $this->userManager->expects($this->once())
                        ->method('checkPassword')
-                       ->with($this->userId, 'old')
+                       ->with($this->loginName, 'old')
                        ->willReturn($user);
 
                $user->expects($this->once())