mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-1803 minor fixes (#741)
This commit is contained in:
@@ -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>
|
||||
|
||||
+12
-5
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user