diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php index 8481410e0c4b16963dcf28f1133883a588a062f6..3b965909461dcfdadb5648f121968fdf6049df8d 100644 --- a/plugins/CoreAdminHome/Controller.php +++ b/plugins/CoreAdminHome/Controller.php @@ -132,6 +132,12 @@ class Controller extends ControllerAdmin $mail['type'] = Common::getRequestVar('mailType', ''); $mail['username'] = Common::unsanitizeInputValue(Common::getRequestVar('mailUsername', '')); $mail['password'] = Common::unsanitizeInputValue(Common::getRequestVar('mailPassword', '')); + + if (!array_key_exists('mailPassword', $_POST)) { + // use old password if it wasn't set in request + $mail['password'] = Config::getInstance()->mail['password']; + } + $mail['encryption'] = Common::getRequestVar('mailEncryption', ''); Config::getInstance()->mail = $mail; diff --git a/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js b/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js index 1ef0ce0510ed36496b558f23d2ad79730122c86b..98b8f9743db3a6beb466b2e97170370a3bb12b35 100644 --- a/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js +++ b/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js @@ -17,21 +17,28 @@ var self = this; this.isLoading = false; + this.passwordChanged = false; this.save = function () { this.isLoading = true; - piwikApi.withTokenInUrl(); - piwikApi.post({module: 'CoreAdminHome', action: 'setMailSettings'}, { + var mailSettings = { mailUseSmtp: this.enabled ? '1' : '0', mailPort: this.mailPort, mailHost: this.mailHost, mailType: this.mailType, mailUsername: this.mailUsername, - mailPassword: this.mailPassword, - mailEncryption: this.mailEncryption, - }).then(function (success) { + mailEncryption: this.mailEncryption + }; + + if (this.passwordChanged) { + mailSettings.mailPassword = this.mailPassword; + } + + piwikApi.withTokenInUrl(); + piwikApi.post({module: 'CoreAdminHome', action: 'setMailSettings'}, mailSettings) + .then(function (success) { self.isLoading = false; diff --git a/plugins/CoreAdminHome/templates/generalSettings.twig b/plugins/CoreAdminHome/templates/generalSettings.twig index 69a17cb17e97bd8c47e73ad9294963bc4dedef69..8a780873452d3b7ec3427d847fabcc74c58e4112 100644 --- a/plugins/CoreAdminHome/templates/generalSettings.twig +++ b/plugins/CoreAdminHome/templates/generalSettings.twig @@ -130,8 +130,9 @@ <div piwik-field uicontrol="password" name="mailPassword" ng-model="mailSettings.mailPassword" + ng-change="mailSettings.passwordChanged = true" title="{{ 'General_SmtpPassword'|translate|e('html_attr') }}" - value="{{ mail.password }}" inline-help="{{ help|e('html_attr') }}"> + value="{{ mail.password ? '******' }}" inline-help="{{ help|e('html_attr') }}"> </div> <div piwik-field uicontrol="select" name="mailEncryption"