CB-1803 minor fixes (#741)

This commit is contained in:
Alexander Skoblikov
2022-03-30 17:01:21 +03:00
committed by GitHub
parent fa544ff8d5
commit a237959147
9 changed files with 40 additions and 25 deletions
@@ -16,7 +16,10 @@
*/
package io.cloudbeaver.model.app;
import io.cloudbeaver.model.user.WebRole;
import io.cloudbeaver.model.user.WebUser;
import org.jkiss.dbeaver.model.app.DBPApplication;
import org.jkiss.dbeaver.model.security.SMController;
import java.nio.file.Path;
@@ -31,4 +34,6 @@ public interface WebApplication extends DBPApplication {
Path getDataDirectory(boolean create);
Path getHomeDirectory();
SMController<WebUser, WebRole> getSecurityController();
}
@@ -24,11 +24,10 @@ Require-Bundle: org.eclipse.core.runtime;visibility:=reexport,
org.jkiss.bundle.apache.dbcp,
org.jkiss.dbeaver.net.ssh,
io.cloudbeaver.model;visibility:=reexport,
io.cloudbeaver.service.security
io.cloudbeaver.service.security;visibility:=reexport
Export-Package: io.cloudbeaver,
io.cloudbeaver.auth.provider,
io.cloudbeaver.auth.provider.fa,
io.cloudbeaver.auth.provider.local,
io.cloudbeaver.server,
io.cloudbeaver.server.servlets,
io.cloudbeaver.model,
@@ -37,18 +37,6 @@
</service>
</extension>
<extension point="org.jkiss.dbeaver.auth.provider">
<authProvider id="local" label="Local" description="Local name/password based authentication" class="io.cloudbeaver.auth.provider.local.LocalAuthProvider">
<credentials>
<propertyGroup label="General">
<property id="user" label="User name" type="string" description="User name" admin="true" user="true" identifying="true"/>
<property id="password" label="User password" type="string" description="User password" encryption="hash" admin="true" user="true"/>
</propertyGroup>
</credentials>
</authProvider>
</extension>
<extension point="org.jkiss.dbeaver.dataSourceHandler">
<handler id="db.access.check" class="io.cloudbeaver.model.WebDatasourceAccessCheckHandler"/>
</extension>
@@ -21,7 +21,6 @@ import com.google.gson.GsonBuilder;
import com.google.gson.InstanceCreator;
import com.google.gson.stream.JsonWriter;
import io.cloudbeaver.model.app.WebApplication;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.model.user.WebRole;
import io.cloudbeaver.model.user.WebUser;
import io.cloudbeaver.service.security.SecurityPluginService;
@@ -415,7 +414,7 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication
@NotNull
private File getRuntimeAppConfigFile() {
return getDataDirectory(false).resolve(CBConstants.RUNTIME_APP_CONFIG_FILE_NAME).toFile();
return getDataDirectory(true).resolve(CBConstants.RUNTIME_APP_CONFIG_FILE_NAME).toFile();
}
@NotNull
@@ -439,7 +438,7 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication
}
protected SMAdminController<WebUser, WebRole> createSecurityController() throws DBException {
return SecurityPluginService.getSecurityService(this, databaseConfiguration);
return SecurityPluginService.createSecurityService(this, databaseConfiguration);
}
private void loadConfiguration(String configPath) {
@@ -665,7 +664,7 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication
}
if (isConfigurationMode()) {
SecurityPluginService.finishConfiguration(adminName, adminPassword, authInfoList);
finishSecurityServiceConfiguration(adminName, adminPassword, authInfoList);
}
// Save runtime configuration
@@ -692,6 +691,10 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication
configurationMode = CommonUtils.isEmpty(serverName);
}
protected void finishSecurityServiceConfiguration(@NotNull String adminName, @Nullable String adminPassword, @NotNull List<WebAuthInfo> authInfoList) throws DBException {
SecurityPluginService.finishConfiguration(adminName, adminPassword, authInfoList);
}
public synchronized void flushConfiguration() throws DBException {
saveRuntimeConfig(serverName, serverURL, maxSessionIdleTime, appConfiguration);
}
@@ -13,5 +13,6 @@ Require-Bundle: org.jkiss.dbeaver.model;visibility:=reexport,
org.jkiss.dbeaver.registry;visibility:=reexport,
org.jkiss.bundle.apache.dbcp,
io.cloudbeaver.model
Export-Package: io.cloudbeaver.service.security
Export-Package: io.cloudbeaver.auth.provider.local,
io.cloudbeaver.service.security
Automatic-Module-Name: io.cloudbeaver.service.security
@@ -6,4 +6,16 @@
<service class="io.cloudbeaver.service.security.SecurityPluginService"/>
</extension>
<extension point="org.jkiss.dbeaver.auth.provider">
<authProvider id="local" label="Local" description="Local name/password based authentication" class="io.cloudbeaver.auth.provider.local.LocalAuthProvider">
<credentials>
<propertyGroup label="General">
<property id="user" label="User name" type="string" description="User name" admin="true" user="true" identifying="true"/>
<property id="password" label="User password" type="string" description="User password" encryption="hash" admin="true" user="true"/>
</propertyGroup>
</credentials>
</authProvider>
</extension>
</plugin>
@@ -16,18 +16,21 @@
*/
package io.cloudbeaver.auth.provider.local;
import io.cloudbeaver.model.app.WebApplication;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.server.CBApplication;
import io.cloudbeaver.model.user.WebRole;
import io.cloudbeaver.model.user.WebUser;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.auth.AuthPropertyEncryption;
import org.jkiss.dbeaver.model.auth.SMAuthProvider;
import org.jkiss.dbeaver.model.auth.SMSession;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.security.SMController;
import org.jkiss.dbeaver.registry.auth.AuthProviderDescriptor;
import org.jkiss.dbeaver.registry.auth.AuthProviderRegistry;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.SecurityUtils;
import java.util.Map;
@@ -45,7 +48,7 @@ public class LocalAuthProvider implements SMAuthProvider<LocalAuthSession> {
String userName = CommonUtils.toString(userCredentials.get(CRED_USER), null);
AuthProviderDescriptor authProvider = AuthProviderRegistry.getInstance().getAuthProvider(PROVIDER_ID);
Map<String, Object> storedCredentials = CBApplication.getInstance().getSecurityController().getUserCredentials(userName, authProvider.getId());
Map<String, Object> storedCredentials = getSecurityController().getUserCredentials(userName, authProvider.getId());
if (storedCredentials == null) {
throw new DBException("Invalid user name or password");
}
@@ -79,7 +82,7 @@ public class LocalAuthProvider implements SMAuthProvider<LocalAuthSession> {
String userName = webSession.getUser().getUserId();
AuthProviderDescriptor authProvider = AuthProviderRegistry.getInstance().getAuthProvider(PROVIDER_ID);
Map<String, Object> storedCredentials = CBApplication.getInstance().getSecurityController().getUserCredentials(userName, authProvider.getId());
Map<String, Object> storedCredentials = getSecurityController().getUserCredentials(userName, authProvider.getId());
if (storedCredentials == null) {
throw new DBException("Invalid user name or password");
}
@@ -98,8 +101,12 @@ public class LocalAuthProvider implements SMAuthProvider<LocalAuthSession> {
//String newPasswordHash = WebAuthProviderPropertyEncryption.hash.encrypt(userName, newPassword);
storedCredentials.put(CRED_PASSWORD, newPassword);
CBApplication.getInstance().getSecurityController().setUserCredentials(userName, authProvider.getId(), storedCredentials);
getSecurityController().setUserCredentials(userName, authProvider.getId(), storedCredentials);
return true;
}
private static SMController<WebUser, WebRole> getSecurityController() {
return ((WebApplication) DBWorkbench.getPlatform().getApplication()).getSecurityController();
}
}
@@ -49,7 +49,7 @@ public class SecurityPluginService implements IPluginService {
}
public static synchronized SMAdminController<WebUser, WebRole> getSecurityService(WebApplication application, Map<String, Object> databaseConfig) throws DBException {
public static synchronized SMAdminController<WebUser, WebRole> createSecurityService(WebApplication application, Map<String, Object> databaseConfig) throws DBException {
if (CONTROLLER_INSTANCE != null) {
return CONTROLLER_INSTANCE;
}