Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimivar <simivar@gmail.com>2019-04-11 07:25:31 +0300
committerThomas Steur <tsteur@users.noreply.github.com>2019-04-11 07:25:31 +0300
commit4566c443ce1866cd2d65fd076940c923f52b4696 (patch)
tree75dc0e7d787928a781b49bf55b3cc5c9268365c9 /plugins/UsersManager
parent0a14a503684833baf0e98a34a0e02f8545e45c5c (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.php7
-rw-r--r--plugins/UsersManager/tests/Integration/APITest.php25
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();