From 04f127bd4ab9a748d51feaa014bceec5ce318710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20S=C3=A1nchez?= Date: Tue, 8 Sep 2026 12:08:44 -0600 Subject: [PATCH] fix[backend](email-settings): mask email/password config values sent to frontend --- .../service/UtmConfigurationParameterService.java | 10 ++++++++-- .../service/mail_config/MailConfigService.java | 1 + .../web/rest/UtmConfigurationParameterResource.java | 10 ++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/park/utmstack/service/UtmConfigurationParameterService.java b/backend/src/main/java/com/park/utmstack/service/UtmConfigurationParameterService.java index 48ceb04ff..49dd9aca6 100644 --- a/backend/src/main/java/com/park/utmstack/service/UtmConfigurationParameterService.java +++ b/backend/src/main/java/com/park/utmstack/service/UtmConfigurationParameterService.java @@ -101,12 +101,18 @@ public void saveAll(List params) throws UtmMailExcept Map cfg = new HashMap<>(); + List toSave = new ArrayList<>(); for (UtmConfigurationParameter p : params) { + boolean isPassword = Constants.CONF_TYPE_PASSWORD.equalsIgnoreCase(p.getConfParamDatatype()); + if (isPassword && Constants.MASKED_VALUE.equals(p.getConfParamValue())) { + continue; + } cfg.put(p.getConfParamShort(), p.getConfParamValue()); - if (StringUtils.hasText(p.getConfParamValue()) && p.getConfParamDatatype().equalsIgnoreCase("password")) + if (StringUtils.hasText(p.getConfParamValue()) && isPassword) p.setConfParamValue(CipherUtil.encrypt(p.getConfParamValue(), System.getenv(Constants.ENV_ENCRYPTION_KEY))); + toSave.add(p); } - configParamRepository.saveAll(params); + configParamRepository.saveAll(toSave); Constants.CFG.putAll(cfg); } catch (UtmMailException e) { throw new UtmMailException(ctx + ": " + e.getMessage()); diff --git a/backend/src/main/java/com/park/utmstack/service/mail_config/MailConfigService.java b/backend/src/main/java/com/park/utmstack/service/mail_config/MailConfigService.java index fffeb4b34..42e4e8bf2 100644 --- a/backend/src/main/java/com/park/utmstack/service/mail_config/MailConfigService.java +++ b/backend/src/main/java/com/park/utmstack/service/mail_config/MailConfigService.java @@ -29,6 +29,7 @@ public String getParamValue(List parameters, String s .filter(p -> p.getConfParamShort().equals(shortName)) .findFirst() .map(UtmConfigurationParameter::getConfParamValue) + .filter(v -> !Constants.MASKED_VALUE.equals(v)) .orElse(Constants.CFG.get(shortName)); } } diff --git a/backend/src/main/java/com/park/utmstack/web/rest/UtmConfigurationParameterResource.java b/backend/src/main/java/com/park/utmstack/web/rest/UtmConfigurationParameterResource.java index 18e29aacc..0e0668104 100644 --- a/backend/src/main/java/com/park/utmstack/web/rest/UtmConfigurationParameterResource.java +++ b/backend/src/main/java/com/park/utmstack/web/rest/UtmConfigurationParameterResource.java @@ -1,5 +1,6 @@ package com.park.utmstack.web.rest; +import com.park.utmstack.config.Constants; import com.park.utmstack.domain.UtmConfigurationParameter; import com.park.utmstack.domain.application_events.enums.ApplicationEventType; import com.park.utmstack.service.UtmConfigurationParameterQueryService; @@ -117,6 +118,7 @@ public ResponseEntity> getAllUtmConfigurationPar log.debug("REST request to get UtmConfigurationParameters by criteria: {}", criteria); Page page = utmConfigurationParameterQueryService.findByCriteria(criteria, pageable); HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/utm-configuration-parameters"); + page.getContent().forEach(this::maskSensitive); return ResponseEntity.ok().headers(headers).body(page.getContent()); } @@ -130,9 +132,17 @@ public ResponseEntity> getAllUtmConfigurationPar public ResponseEntity getUtmConfigurationParameter(@PathVariable Long id) { log.debug("REST request to get UtmConfigurationParameter : {}", id); Optional utmConfigurationParameter = utmConfigurationParameterService.findOne(id); + utmConfigurationParameter.ifPresent(this::maskSensitive); return tech.jhipster.web.util.ResponseUtil.wrapOrNotFound(utmConfigurationParameter); } + private void maskSensitive(UtmConfigurationParameter p) { + if (Constants.CONF_TYPE_PASSWORD.equalsIgnoreCase(p.getConfParamDatatype()) + && StringUtils.hasText(p.getConfParamValue())) { + p.setConfParamValue(Constants.MASKED_VALUE); + } + } + @PostMapping ("/checkEmailConfiguration") public ResponseEntity checkEmailConfiguration(@Valid @RequestBody List parameters) { final String ctx = CLASSNAME + ".checkEmailConfiguration";