Merge pull request #2484 from nextcloud/fix-wrong-update-of-email-address

make sure that we only update the email address if it really changed
This commit is contained in:
Christoph Wurst 2016-12-05 17:14:23 +01:00 committed by GitHub
commit 0478db6506
2 changed files with 28 additions and 7 deletions

View File

@ -605,6 +605,7 @@ class UsersController extends Controller {
// keep the user back-end up-to-date with the latest display name and email
// address
$oldDisplayName = $user->getDisplayName();
$oldDisplayName = is_null($oldDisplayName) ? '' : $oldDisplayName;
if (isset($data[AccountManager::PROPERTY_DISPLAYNAME]['value'])
&& $oldDisplayName !== $data[AccountManager::PROPERTY_DISPLAYNAME]['value']
) {
@ -615,6 +616,7 @@ class UsersController extends Controller {
}
$oldEmailAddress = $user->getEMailAddress();
$oldEmailAddress = is_null($oldEmailAddress) ? '' : $oldEmailAddress;
if (isset($data[AccountManager::PROPERTY_EMAIL]['value'])
&& $oldEmailAddress !== $data[AccountManager::PROPERTY_EMAIL]['value']
) {

View File

@ -2107,20 +2107,22 @@ class UsersControllerTest extends \Test\TestCase {
$user->method('getEMailAddress')->willReturn($oldEmailAddress);
$user->method('canChangeDisplayName')->willReturn(true);
if ($data[AccountManager::PROPERTY_EMAIL]['value'] !== $oldEmailAddress) {
if ($data[AccountManager::PROPERTY_EMAIL]['value'] === $oldEmailAddress ||
$oldEmailAddress === null && $data[AccountManager::PROPERTY_EMAIL]['value'] === '') {
$user->expects($this->never())->method('setEMailAddress');
} else {
$user->expects($this->once())->method('setEMailAddress')
->with($data[AccountManager::PROPERTY_EMAIL]['value'])
->willReturn(true);
} else {
$user->expects($this->never())->method('setEMailAddress');
}
if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] !== $oldDisplayName) {
if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === $oldDisplayName ||
$oldDisplayName === null && $data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === '') {
$user->expects($this->never())->method('setDisplayName');
} else {
$user->expects($this->once())->method('setDisplayName')
->with($data[AccountManager::PROPERTY_DISPLAYNAME]['value'])
->willReturn(true);
} else {
$user->expects($this->never())->method('setDisplayName');
}
$this->accountManager->expects($this->once())->method('updateUser')
@ -2162,7 +2164,23 @@ class UsersControllerTest extends \Test\TestCase {
],
'john@example.com',
'john New doe'
]
],
[
[
AccountManager::PROPERTY_EMAIL => ['value' => ''],
AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
],
null,
'john New doe'
],
[
[
AccountManager::PROPERTY_EMAIL => ['value' => 'john@example.com'],
AccountManager::PROPERTY_DISPLAYNAME => ['value' => 'john doe'],
],
'john@example.com',
null
],
];
}
@ -2274,6 +2292,7 @@ class UsersControllerTest extends \Test\TestCase {
->with(
$this->equalTo($mailAddress)
);
$user->method('getEMailAddress')->willReturn('oldEmailAddress');
$this->mailer
->expects($this->any())
->method('validateMailAddress')