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:
authorZoltan Flamis <zoltan@innocraft.com>2021-05-27 01:28:59 +0300
committerGitHub <noreply@github.com>2021-05-27 01:28:59 +0300
commit70b05de003487a31495bb9927017606a2faab7dd (patch)
tree3dcdcf0d6dc2298f356248f88d8f2e51e214afb2 /plugins/CorePluginsAdmin
parent30583c72fbb57469ee953536f69af2859fef61db (diff)
Email notifications for critical actions (#17531)
* wip email notifications * use Mail class * token and login settings notification emails * more notification emails * user created/deleted notification * use an abstract class * import class * catch email ex * wip * change settings changed emails * import loggerinterface * simpler email bodies * some small tweaks to the translations Co-authored-by: diosmosis <diosmosis@users.noreply.github.com>
Diffstat (limited to 'plugins/CorePluginsAdmin')
-rw-r--r--plugins/CorePluginsAdmin/API.php50
1 files changed, 50 insertions, 0 deletions
diff --git a/plugins/CorePluginsAdmin/API.php b/plugins/CorePluginsAdmin/API.php
index 5b4450b52e..32ba59a75e 100644
--- a/plugins/CorePluginsAdmin/API.php
+++ b/plugins/CorePluginsAdmin/API.php
@@ -13,6 +13,9 @@ use Piwik\Plugin\SettingsProvider;
use Exception;
use Piwik\Plugins\Login\PasswordVerifier;
use Piwik\Version;
+use Piwik\Container\StaticContainer;
+use Piwik\Plugins\CoreAdminHome\Emails\SettingsChangedEmail;
+use Piwik\Plugins\CoreAdminHome\Emails\SecurityNotificationEmail;
/**
* API for plugin CorePluginsAdmin
@@ -61,15 +64,26 @@ class API extends \Piwik\Plugin\API
$this->settingsMetadata->setPluginSettings($pluginsSettings, $settingValues);
+ $sendSettingsChangedNotificationEmailPlugins = [];
+
try {
foreach ($pluginsSettings as $pluginSetting) {
if (!empty($settingValues[$pluginSetting->getPluginName()])) {
$pluginSetting->save();
+
+ $pluginName = $pluginSetting->getPluginName();
+ if (in_array($pluginName, array_keys(SecurityNotificationEmail::$notifyPluginList))) {
+ $sendSettingsChangedNotificationEmailPlugins[] = $pluginName;
+ }
}
}
} catch (Exception $e) {
throw new Exception(Piwik::translate('CoreAdminHome_PluginSettingsSaveFailed'));
}
+
+ if (count($sendSettingsChangedNotificationEmailPlugins) > 0) {
+ $this->sendNotificationEmails($sendSettingsChangedNotificationEmailPlugins);
+ }
}
/**
@@ -137,4 +151,40 @@ class API extends \Piwik\Plugin\API
throw new Exception(Piwik::translate('UsersManager_CurrentPasswordNotCorrect'));
}
}
+
+ private function sendNotificationEmails($sendSettingsChangedNotificationEmailPlugins)
+ {
+ $pluginNames = [];
+ foreach ($sendSettingsChangedNotificationEmailPlugins as $plugin) {
+ $pluginNames[] = Piwik::translate(SettingsChangedEmail::$notifyPluginList[$plugin]);
+ }
+ $pluginNames = implode(', ', $pluginNames);
+
+ $container = StaticContainer::getContainer();
+
+ $email = $container->make(SettingsChangedEmail::class, array(
+ 'login' => Piwik::getCurrentUserLogin(),
+ 'emailAddress' => Piwik::getCurrentUserEmail(),
+ 'pluginNames' => $pluginNames
+ ));
+ $email->safeSend();
+
+ $superuserEmailAddresses = Piwik::getAllSuperUserAccessEmailAddresses();
+ unset($superuserEmailAddresses[Piwik::getCurrentUserLogin()]);
+ $superUserEmail = false;
+
+ foreach ($superuserEmailAddresses as $address) {
+ $superUserEmail = $superUserEmail ?: $container->make(SettingsChangedEmail::class, array(
+ 'login' => Piwik::translate('Installation_SuperUser'),
+ 'emailAddress' => $address,
+ 'pluginNames' => $pluginNames,
+ 'superuser' => Piwik::getCurrentUserLogin()
+ ));
+ $superUserEmail->addTo($address);
+ }
+
+ if ($superUserEmail) {
+ $superUserEmail->safeSend();
+ }
+ }
}