CB-4099. Create logic for save comfig and user for CB TE. (#2067)

* CB-4099. Create logic for save comfig and user for CB TE.

* CB-4099. Fixed checkstyle

* CB-4099. Refactor after review

---------

Co-authored-by: EvgeniaBzzz <139753579+EvgeniaBzzz@users.noreply.github.com>
This commit is contained in:
DenisSinelnikov
2023-10-24 15:46:55 +03:00
committed by GitHub
co-authored by EvgeniaBzzz
parent 997936328e
commit 98197c8829
5 changed files with 18 additions and 14 deletions
@@ -16,6 +16,7 @@
*/
package io.cloudbeaver.server;
import org.jkiss.dbeaver.model.auth.AuthInfo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
@@ -24,7 +25,6 @@ import io.cloudbeaver.auth.CBAuthConstants;
import io.cloudbeaver.model.app.BaseWebApplication;
import io.cloudbeaver.model.app.WebAuthApplication;
import io.cloudbeaver.model.app.WebAuthConfiguration;
import io.cloudbeaver.model.session.WebAuthInfo;
import io.cloudbeaver.registry.WebDriverRegistry;
import io.cloudbeaver.registry.WebServiceRegistry;
import io.cloudbeaver.server.jetty.CBJettyServer;
@@ -825,7 +825,7 @@ public abstract class CBApplication extends BaseWebApplication implements WebAut
@NotNull String newServerURL,
@NotNull String adminName,
@Nullable String adminPassword,
@NotNull List<WebAuthInfo> authInfoList,
@NotNull List<AuthInfo> authInfoList,
long sessionExpireTime,
@NotNull CBAppConfig appConfig,
@Nullable SMCredentialsProvider credentialsProvider
@@ -886,7 +886,7 @@ public abstract class CBApplication extends BaseWebApplication implements WebAut
protected abstract void finishSecurityServiceConfiguration(
@NotNull String adminName,
@Nullable String adminPassword,
@NotNull List<WebAuthInfo> authInfoList
@NotNull List<AuthInfo> authInfoList
) throws DBException;
public synchronized void flushConfiguration(SMCredentialsProvider credentialsProvider) throws DBException {
@@ -16,9 +16,9 @@
*/
package io.cloudbeaver.server;
import org.jkiss.dbeaver.model.auth.AuthInfo;
import io.cloudbeaver.auth.NoAuthCredentialsProvider;
import io.cloudbeaver.model.rm.local.LocalResourceController;
import io.cloudbeaver.model.session.WebAuthInfo;
import io.cloudbeaver.service.security.CBEmbeddedSecurityController;
import io.cloudbeaver.service.security.EmbeddedSecurityControllerFactory;
import org.jkiss.code.NotNull;
@@ -31,7 +31,6 @@ import org.jkiss.dbeaver.model.auth.SMCredentialsProvider;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.security.SMAdminController;
import org.jkiss.dbeaver.model.security.SMController;
import org.jkiss.dbeaver.registry.BasePlatformImpl;
import org.jkiss.dbeaver.registry.LocalFileController;
import org.jkiss.dbeaver.runtime.DBWorkbench;
@@ -94,7 +93,7 @@ public class CBApplicationCE extends CBApplication {
protected void finishSecurityServiceConfiguration(
@NotNull String adminName,
@Nullable String adminPassword,
@NotNull List<WebAuthInfo> authInfoList
@NotNull List<AuthInfo> authInfoList
) throws DBException {
if (securityController instanceof CBEmbeddedSecurityController) {
((CBEmbeddedSecurityController) securityController).finishConfiguration(adminName, adminPassword, authInfoList);
@@ -40,6 +40,7 @@ import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.auth.AuthInfo;
import org.jkiss.dbeaver.model.navigator.DBNBrowseSettings;
import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.model.security.*;
@@ -514,6 +515,7 @@ public class WebServiceAdmin implements DBWServiceAdmin {
adminName = curUser == null ? null : curUser.getUserId();
adminPassword = null;
}
List<AuthInfo> authInfos = new ArrayList<>();
List<WebAuthInfo> authInfoList = webSession.getAllAuthInfo();
if (CommonUtils.isEmpty(adminName)) {
// Try to get admin name from existing authentications (first one)
@@ -524,6 +526,11 @@ public class WebServiceAdmin implements DBWServiceAdmin {
if (CommonUtils.isEmpty(adminName)) {
adminName = CBConstants.DEFAULT_ADMIN_NAME;
}
for (WebAuthInfo webAuthInfo : authInfoList) {
authInfos.add(new AuthInfo(
webAuthInfo.getAuthProviderDescriptor().getId(),
webAuthInfo.getUserCredentials()));
}
// Patch configuration by services
for (DBWServiceServerConfigurator wsc : WebServiceRegistry.getInstance().getWebServices(DBWServiceServerConfigurator.class)) {
@@ -541,7 +548,7 @@ public class WebServiceAdmin implements DBWServiceAdmin {
serverURL,
adminName,
adminPassword,
authInfoList,
authInfos,
sessionExpireTime,
appConfig,
webSession
@@ -26,7 +26,6 @@ import io.cloudbeaver.auth.SMAutoAssign;
import io.cloudbeaver.model.app.WebAppConfiguration;
import io.cloudbeaver.model.app.WebAuthApplication;
import io.cloudbeaver.model.app.WebAuthConfiguration;
import io.cloudbeaver.model.session.WebAuthInfo;
import io.cloudbeaver.registry.WebAuthProviderDescriptor;
import io.cloudbeaver.registry.WebAuthProviderRegistry;
import io.cloudbeaver.registry.WebMetaParametersRegistry;
@@ -2625,7 +2624,7 @@ public class CBEmbeddedSecurityController<T extends WebAuthApplication>
public void finishConfiguration(
@NotNull String adminName,
@Nullable String adminPassword,
@NotNull List<WebAuthInfo> authInfoList
@NotNull List<AuthInfo> authInfoList
) throws DBException {
database.finishConfiguration(adminName, adminPassword, authInfoList);
}
@@ -20,7 +20,6 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.cloudbeaver.auth.provider.local.LocalAuthProviderConstants;
import io.cloudbeaver.model.app.WebApplication;
import io.cloudbeaver.model.session.WebAuthInfo;
import io.cloudbeaver.registry.WebAuthProviderDescriptor;
import io.cloudbeaver.registry.WebAuthProviderRegistry;
import io.cloudbeaver.utils.WebAppUtils;
@@ -32,6 +31,7 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBConstants;
import org.jkiss.dbeaver.model.auth.AuthInfo;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCTransaction;
@@ -246,7 +246,7 @@ public class CBDatabase {
public void finishConfiguration(
@NotNull String adminName,
@Nullable String adminPassword,
@NotNull List<WebAuthInfo> authInfoList
@NotNull List<AuthInfo> authInfoList
) throws DBException {
if (!application.isConfigurationMode()) {
throw new DBException("Database is already configured");
@@ -264,12 +264,11 @@ public class CBDatabase {
createAdminUser(adminName, adminPassword);
// Associate all auth credentials with admin user
for (WebAuthInfo ai : authInfoList) {
for (AuthInfo ai : authInfoList) {
if (!ai.getAuthProvider().equals(LocalAuthProviderConstants.PROVIDER_ID)) {
WebAuthProviderDescriptor authProvider = ai.getAuthProviderDescriptor();
Map<String, Object> userCredentials = ai.getUserCredentials();
if (!CommonUtils.isEmpty(userCredentials)) {
adminSecurityController.setUserCredentials(adminName, authProvider.getId(), userCredentials);
adminSecurityController.setUserCredentials(adminName, ai.getAuthProvider(), userCredentials);
}
}
}