diff options
author | simivar <simivar@gmail.com> | 2019-04-11 07:25:31 +0300 |
---|---|---|
committer | Thomas Steur <tsteur@users.noreply.github.com> | 2019-04-11 07:25:31 +0300 |
commit | 4566c443ce1866cd2d65fd076940c923f52b4696 (patch) | |
tree | 75dc0e7d787928a781b49bf55b3cc5c9268365c9 /plugins/UsersManager | |
parent | 0a14a503684833baf0e98a34a0e02f8545e45c5c (diff) |
Add a config to disable e-mail notifications on password/email change through API (#14281)
* Add a config to disable e-mail notifications on password/email change through API #14267
* Add tests for api_update_users_email_notifications setting
* rename setting
* Update API.php
* Update APITest.php
* move enable_update_users_email=1 to teardown in case the test fails
Diffstat (limited to 'plugins/UsersManager')
-rw-r--r-- | plugins/UsersManager/API.php | 7 | ||||
-rw-r--r-- | plugins/UsersManager/tests/Integration/APITest.php | 25 |
2 files changed, 28 insertions, 4 deletions
diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 064a079562..fb3fa2e3c6 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -853,6 +853,7 @@ class API extends \Piwik\Plugin\API $_isPasswordHashed = false, $passwordConfirmation = false) { $requirePasswordConfirmation = self::$UPDATE_USER_REQUIRE_PASSWORD_CONFIRMATION; + $isEmailNotificationOnInConfig = Config::getInstance()->General['enable_update_users_email']; self::$UPDATE_USER_REQUIRE_PASSWORD_CONFIRMATION = true; Piwik::checkUserHasSuperUserAccessOrIsTheUser($userLogin); @@ -918,13 +919,11 @@ class API extends \Piwik\Plugin\API Cache::deleteTrackerCache(); - if ($email != $userInfo['email']) { + if ($email != $userInfo['email'] && $isEmailNotificationOnInConfig) { $this->sendEmailChangedEmail($userInfo, $email); } - if ($passwordHasBeenUpdated - && $requirePasswordConfirmation - ) { + if ($passwordHasBeenUpdated && $requirePasswordConfirmation && $isEmailNotificationOnInConfig) { $this->sendPasswordChangedEmail($userInfo); } diff --git a/plugins/UsersManager/tests/Integration/APITest.php b/plugins/UsersManager/tests/Integration/APITest.php index e75f27a127..a512660e6b 100644 --- a/plugins/UsersManager/tests/Integration/APITest.php +++ b/plugins/UsersManager/tests/Integration/APITest.php @@ -11,6 +11,7 @@ namespace Piwik\Plugins\UsersManager\tests; use Piwik\Access\Role\View; use Piwik\Access\Role\Write; use Piwik\Auth\Password; +use Piwik\Config; use Piwik\Container\StaticContainer; use Piwik\Mail; use Piwik\Option; @@ -156,7 +157,14 @@ class APITest extends IntegrationTestCase Fixture::createWebsite('2014-01-01 00:00:00'); $this->api->addUser($this->login, $this->password, 'userlogin@password.de'); } + + public function tearDown() + { + Config::getInstance()->General['enable_update_users_email'] = 1; + parent::tearDown(); + } + public function test_setUserAccess_ShouldTriggerRemoveSiteAccessEvent_IfAccessToAWebsiteIsRemoved() { $eventTriggered = false; @@ -322,6 +330,23 @@ class APITest extends IntegrationTestCase ], $subjects); } + public function test_updateUser_doesNotSendEmailsIfTurnedOffInConfig() + { + Config::getInstance()->General['enable_update_users_email'] = 0; + $capturedMails = []; + Piwik::addAction('Mail.send', function (Mail $mail) use (&$capturedMails) { + $capturedMails[] = $mail; + }); + + $identity = FakeAccess::$identity; + FakeAccess::$identity = $this->login; // en + $this->api->updateUser($this->login, 'newPassword2', 'email2@example.com', 'newAlias2', false, $this->password); + FakeAccess::$identity = $identity; + + $subjects = array_map(function (Mail $mail) { return $mail->getSubject(); }, $capturedMails); + $this->assertEquals([], $subjects); + } + public function test_updateUser_doesNotChangePasswordIfFalsey() { $model = new Model(); |