From ffd4cdf2fc2dd1aae608c176c2bbc03b5641916c Mon Sep 17 00:00:00 2001 From: serge-rider Date: Fri, 20 Nov 2020 22:42:08 +0300 Subject: [PATCH] CB-511 Credentials save fixes. Password value render fix --- .../src/io/cloudbeaver/WebServiceUtils.java | 22 ++++++++++++------- .../io/cloudbeaver/model/WebPropertyInfo.java | 5 ++++- .../service/core/impl/WebServiceCore.java | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java index 8b8c0ccb0f..fa417bf428 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/WebServiceUtils.java @@ -141,8 +141,7 @@ public class WebServiceUtils { navSettings.setShowSystemObjects(false); ((DataSourceDescriptor)newDataSource).setNavigatorSettings(navSettings); - saveAuthProperties(newDataSource, newDataSource.getConnectionConfiguration(), config.getCredentials()); - newDataSource.setSavePassword(config.isSaveCredentials()); + saveAuthProperties(newDataSource, newDataSource.getConnectionConfiguration(), config.getCredentials(), config.isSaveCredentials()); return newDataSource; } @@ -169,8 +168,18 @@ public class WebServiceUtils { dsConfig.setAuthModelId(config.getAuthModelId()); } - public static void saveAuthProperties(DBPDataSourceContainer dataSourceContainer, DBPConnectionConfiguration configuration, Map authProperties) { - if (!CommonUtils.isEmpty(authProperties)) { + public static void saveAuthProperties(DBPDataSourceContainer dataSourceContainer, DBPConnectionConfiguration configuration, Map authProperties, boolean saveCredentials) { + dataSourceContainer.setSavePassword(saveCredentials); + if (!saveCredentials) { + // Reset credentials + authProperties = new LinkedHashMap<>(); + } else { + if (authProperties == null) { + // No changes + return; + } + } + { // Read save credentials DBAAuthCredentials credentials = configuration.getAuthModel().loadCredentials(dataSourceContainer, configuration); @@ -194,10 +203,7 @@ public class WebServiceUtils { setConnectionConfiguration(dataSource.getDriver(), dataSource.getConnectionConfiguration(), config); dataSource.setName(config.getName()); dataSource.setDescription(config.getDescription()); - if (config.getCredentials() != null) { - saveAuthProperties(dataSource, dataSource.getConnectionConfiguration(), config.getCredentials()); - } - dataSource.setSavePassword(config.isSaveCredentials()); + saveAuthProperties(dataSource, dataSource.getConnectionConfiguration(), config.getCredentials(), config.isSaveCredentials()); } public static DBNBrowseSettings parseNavigatorSettings(Map settingsMap) { diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebPropertyInfo.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebPropertyInfo.java index 62b097bc7b..77e2da53db 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebPropertyInfo.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebPropertyInfo.java @@ -113,13 +113,16 @@ public class WebPropertyInfo { @Property public Object getValue() throws DBException { + Object value = propertySource == null ? null : propertySource.getPropertyValue(session.getProgressMonitor(), property.getId()); if (property instanceof ObjectPropertyDescriptor) { ObjectPropertyDescriptor opd = (ObjectPropertyDescriptor)property; if (!showProtected && opd.isPassword() || opd.isHidden()) { + if (value == null || value.toString().isEmpty()) { + return ""; + } return "******"; } } - Object value = propertySource == null ? null : propertySource.getPropertyValue(session.getProgressMonitor(), property.getId()); return value == null ? null : makePropertyValue(value); } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java index a4e93b8aa4..070e9d7d72 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/core/impl/WebServiceCore.java @@ -324,7 +324,7 @@ public class WebServiceCore implements DBWServiceCore { if (dataSource != null) { testDataSource = dataSource.createCopy(dataSource.getRegistry()); WebServiceUtils.setConnectionConfiguration(testDataSource.getDriver(), testDataSource.getConnectionConfiguration(), connectionConfig); - WebServiceUtils.saveAuthProperties(testDataSource, testDataSource.getConnectionConfiguration(), connectionConfig.getCredentials()); + WebServiceUtils.saveAuthProperties(testDataSource, testDataSource.getConnectionConfiguration(), connectionConfig.getCredentials(), connectionConfig.isSaveCredentials()); } else { testDataSource = WebServiceUtils.createConnectionFromConfig(connectionConfig, sessionRegistry); }