Commit 5e2c06700e460a01df5ec8c1d94eec30aea07046

Authored by Igor Kulikov
Committed by GitHub
2 parents b341030c d8f2da48

Merge pull request #3326 from YevhenBondarenko/develop/2.5.4-mail

smtp password
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 */ 15 */
16 package org.thingsboard.server.controller; 16 package org.thingsboard.server.controller;
17 17
  18 +import com.fasterxml.jackson.databind.node.ObjectNode;
18 import org.springframework.beans.factory.annotation.Autowired; 19 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.security.access.prepost.PreAuthorize; 20 import org.springframework.security.access.prepost.PreAuthorize;
20 import org.springframework.web.bind.annotation.PathVariable; 21 import org.springframework.web.bind.annotation.PathVariable;
@@ -59,7 +60,11 @@ public class AdminController extends BaseController { @@ -59,7 +60,11 @@ public class AdminController extends BaseController {
59 public AdminSettings getAdminSettings(@PathVariable("key") String key) throws ThingsboardException { 60 public AdminSettings getAdminSettings(@PathVariable("key") String key) throws ThingsboardException {
60 try { 61 try {
61 accessControlService.checkPermission(getCurrentUser(), Resource.ADMIN_SETTINGS, Operation.READ); 62 accessControlService.checkPermission(getCurrentUser(), Resource.ADMIN_SETTINGS, Operation.READ);
62 - return checkNotNull(adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, key)); 63 + AdminSettings adminSettings = checkNotNull(adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, key));
  64 + if (adminSettings.getKey().equals("mail")) {
  65 + ((ObjectNode) adminSettings.getJsonValue()).put("password", "");
  66 + }
  67 + return adminSettings;
63 } catch (Exception e) { 68 } catch (Exception e) {
64 throw handleException(e); 69 throw handleException(e);
65 } 70 }
@@ -74,6 +79,7 @@ public class AdminController extends BaseController { @@ -74,6 +79,7 @@ public class AdminController extends BaseController {
74 adminSettings = checkNotNull(adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, adminSettings)); 79 adminSettings = checkNotNull(adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, adminSettings));
75 if (adminSettings.getKey().equals("mail")) { 80 if (adminSettings.getKey().equals("mail")) {
76 mailService.updateMailConfiguration(); 81 mailService.updateMailConfiguration();
  82 + ((ObjectNode) adminSettings.getJsonValue()).put("password", "");
77 } 83 }
78 return adminSettings; 84 return adminSettings;
79 } catch (Exception e) { 85 } catch (Exception e) {
@@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
15 */ 15 */
16 package org.thingsboard.server.dao.settings; 16 package org.thingsboard.server.dao.settings;
17 17
  18 +import com.fasterxml.jackson.databind.node.ObjectNode;
18 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
19 import org.apache.commons.lang3.StringUtils; 20 import org.apache.commons.lang3.StringUtils;
20 import org.springframework.beans.factory.annotation.Autowired; 21 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +53,13 @@ public class AdminSettingsServiceImpl implements AdminSettingsService { @@ -52,6 +53,13 @@ public class AdminSettingsServiceImpl implements AdminSettingsService {
52 public AdminSettings saveAdminSettings(TenantId tenantId, AdminSettings adminSettings) { 53 public AdminSettings saveAdminSettings(TenantId tenantId, AdminSettings adminSettings) {
53 log.trace("Executing saveAdminSettings [{}]", adminSettings); 54 log.trace("Executing saveAdminSettings [{}]", adminSettings);
54 adminSettingsValidator.validate(adminSettings, data -> tenantId); 55 adminSettingsValidator.validate(adminSettings, data -> tenantId);
  56 + if (adminSettings.getKey().equals("mail") && "".equals(adminSettings.getJsonValue().get("password").asText())) {
  57 + AdminSettings mailSettings = findAdminSettingsByKey(tenantId, "mail");
  58 + if (mailSettings != null) {
  59 + ((ObjectNode) adminSettings.getJsonValue()).put("password", mailSettings.getJsonValue().get("password").asText());
  60 + }
  61 + }
  62 +
55 return adminSettingsDao.save(tenantId, adminSettings); 63 return adminSettingsDao.save(tenantId, adminSettings);
56 } 64 }
57 65
@@ -123,16 +123,16 @@ @@ -123,16 +123,16 @@
123 </md-input-container> 123 </md-input-container>
124 <md-input-container class="md-block"> 124 <md-input-container class="md-block">
125 <label translate>admin.proxy-password</label> 125 <label translate>admin.proxy-password</label>
126 - <input name="proxyPassword" ng-model="vm.settings.jsonValue.proxyPassword"> 126 + <input name="proxyPassword" type="password" autocomplete="new-password" ng-model="vm.settings.jsonValue.proxyPassword">
127 </md-input-container> 127 </md-input-container>
128 </section> 128 </section>
129 <md-input-container class="md-block"> 129 <md-input-container class="md-block">
130 <label translate>common.username</label> 130 <label translate>common.username</label>
131 - <input name="username" placeholder="{{ 'common.enter-username' | translate }}" ng-model="vm.settings.jsonValue.username"> 131 + <input placeholder="{{ 'common.enter-username' | translate }}" ng-model="vm.settings.jsonValue.username" autocomplete="new-username" >
132 </md-input-container> 132 </md-input-container>
133 <md-input-container class="md-block"> 133 <md-input-container class="md-block">
134 <label translate>common.password</label> 134 <label translate>common.password</label>
135 - <input name="password" placeholder="{{ 'common.enter-password' | translate }}" type="password" ng-model="vm.settings.jsonValue.password"> 135 + <input placeholder="{{ 'common.enter-password' | translate }}" type="password" ng-model="vm.settings.jsonValue.password" autocomplete="new-password">
136 </md-input-container> 136 </md-input-container>
137 <div layout="row" layout-align="end center" width="100%" layout-wrap> 137 <div layout="row" layout-align="end center" width="100%" layout-wrap>
138 <md-button ng-disabled="$root.loading || vm.settingsForm.$invalid" ng-click="vm.sendTestMail()" class="md-raised">{{'admin.send-test-mail' | translate}}</md-button> 138 <md-button ng-disabled="$root.loading || vm.settingsForm.$invalid" ng-click="vm.sendTestMail()" class="md-raised">{{'admin.send-test-mail' | translate}}</md-button>