mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel
This commit is contained in:
+12
@@ -44,6 +44,7 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
|
||||
private final Map<String, PropertyDescriptor> configurationParameters = new LinkedHashMap<>();
|
||||
private final Map<String, WebAuthProviderPropertyDescriptor> credentialParameters = new LinkedHashMap<>();
|
||||
private final boolean configurable;
|
||||
private final String[] requiredFeatures;
|
||||
|
||||
public WebAuthProviderDescriptor(IConfigurationElement cfg) {
|
||||
super(cfg);
|
||||
@@ -72,6 +73,13 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String rfList = cfg.getAttribute("requiredFeatures");
|
||||
if (!CommonUtils.isEmpty(rfList)) {
|
||||
requiredFeatures = rfList.split(",");
|
||||
} else {
|
||||
requiredFeatures = null;
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -123,4 +131,8 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
|
||||
public String toString() {
|
||||
return getId();
|
||||
}
|
||||
|
||||
public String[] getRequiredFeatures() {
|
||||
return requiredFeatures;
|
||||
}
|
||||
}
|
||||
|
||||
+17
-5
@@ -29,6 +29,7 @@ import io.cloudbeaver.model.user.WebAuthProviderInfo;
|
||||
import io.cloudbeaver.model.user.WebUser;
|
||||
import io.cloudbeaver.registry.WebAuthProviderDescriptor;
|
||||
import io.cloudbeaver.registry.WebServiceRegistry;
|
||||
import io.cloudbeaver.server.CBAppConfig;
|
||||
import io.cloudbeaver.server.CBApplication;
|
||||
import io.cloudbeaver.server.CBPlatform;
|
||||
import io.cloudbeaver.service.auth.DBWServiceAuth;
|
||||
@@ -64,13 +65,28 @@ public class WebServiceAuthImpl implements DBWServiceAuth {
|
||||
if (CommonUtils.isEmpty(providerId)) {
|
||||
throw new DBWebException("Missing auth provider parameter");
|
||||
}
|
||||
WebAuthProviderDescriptor authProvider = WebServiceRegistry.getInstance().getAuthProvider(providerId);
|
||||
if (authProvider == null) {
|
||||
throw new DBWebException("Invalid auth provider '" + providerId + "'");
|
||||
}
|
||||
|
||||
boolean configMode = CBApplication.getInstance().isConfigurationMode();
|
||||
|
||||
// Check enabled auth providers
|
||||
boolean providerEnabled = true;
|
||||
String[] enabledAuthProviders = CBApplication.getInstance().getAppConfiguration().getEnabledAuthProviders();
|
||||
CBAppConfig appConfiguration = CBApplication.getInstance().getAppConfiguration();
|
||||
String[] enabledAuthProviders = appConfiguration.getEnabledAuthProviders();
|
||||
if (enabledAuthProviders != null && !ArrayUtils.contains(enabledAuthProviders, providerId)) {
|
||||
providerEnabled = false;
|
||||
} else {
|
||||
if (!ArrayUtils.isEmpty(authProvider.getRequiredFeatures())) {
|
||||
for (String rf : authProvider.getRequiredFeatures()) {
|
||||
if (!appConfiguration.isFeatureEnabled(rf)) {
|
||||
providerEnabled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (configMode || webSession.hasPermission(DBWConstants.PERMISSION_ADMIN)) {
|
||||
// 1. Admin can authorize in any providers
|
||||
@@ -86,10 +102,6 @@ public class WebServiceAuthImpl implements DBWServiceAuth {
|
||||
}
|
||||
}
|
||||
}
|
||||
WebAuthProviderDescriptor authProvider = WebServiceRegistry.getInstance().getAuthProvider(providerId);
|
||||
if (authProvider == null) {
|
||||
throw new DBWebException("Invalid auth provider '" + providerId + "'");
|
||||
}
|
||||
try {
|
||||
Map<String, Object> providerConfig = Collections.emptyMap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user