From daf9e9aaaa4784aedb981927f62645912ba9e686 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Fri, 15 May 2020 20:54:52 +0300 Subject: [PATCH] Default auth provider fix --- .../model/user/WebAuthProviderInfo.java | 14 +++++++++++++- .../src/io/cloudbeaver/server/CBAppConfig.java | 7 +++++++ .../schema/service.auth.graphqls | 2 +- .../cloudbeaver/service/auth/DBWServiceAuth.java | 4 ++++ .../service/auth/WebServiceBindingAuth.java | 3 +-- .../service/auth/impl/WebServiceAuthImpl.java | 8 ++++++++ .../web-server/CloudbeaverServer.product.launch | 6 +++--- 7 files changed, 37 insertions(+), 7 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/user/WebAuthProviderInfo.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/user/WebAuthProviderInfo.java index 306b8c6f26..417f79f690 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/user/WebAuthProviderInfo.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/user/WebAuthProviderInfo.java @@ -17,10 +17,14 @@ package io.cloudbeaver.model.user; import io.cloudbeaver.registry.WebAuthProviderDescriptor; +import io.cloudbeaver.registry.WebAuthProviderPropertyDescriptor; +import io.cloudbeaver.server.CBPlatform; import org.jkiss.dbeaver.Log; +import java.util.List; + /** - * Web user. + * WebAuthProviderInfo. */ public class WebAuthProviderInfo { @@ -48,6 +52,14 @@ public class WebAuthProviderInfo { return descriptor.getDescription(); } + public boolean isDefault() { + return descriptor.getId().equals(CBPlatform.getInstance().getApplication().getAppConfiguration().getDefaultAuthProvider()); + } + + public List getCredentialParameters() { + return descriptor.getCredentialParameters(); + } + @Override public String toString() { return getId(); diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBAppConfig.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBAppConfig.java index bc601957f6..ea4c09a24d 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBAppConfig.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBAppConfig.java @@ -16,6 +16,8 @@ */ package io.cloudbeaver.server; +import io.cloudbeaver.auth.provider.local.LocalAuthProvider; + /** * Application configuration */ @@ -30,6 +32,7 @@ public class CBAppConfig { private boolean supportsUserWorkspaces = false; private String[] enabledDrivers = new String[0]; private String[] disabledDrivers = new String[0]; + private String defaultAuthProvider = LocalAuthProvider.PROVIDER_ID; public boolean isAuthenticationEnabled() { return authenticationEnabled; @@ -70,4 +73,8 @@ public class CBAppConfig { public String[] getDisabledDrivers() { return disabledDrivers; } + + public String getDefaultAuthProvider() { + return defaultAuthProvider; + } } diff --git a/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls b/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls index 84c2756421..4b5ceaee40 100644 --- a/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls +++ b/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls @@ -23,7 +23,7 @@ type AuthProviderInfo { icon: ID description: String - isDefault: Boolean + default: Boolean #configurationParameters: [ObjectPropertyInfo]! diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java index 9b46cf4281..a425211d79 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/DBWServiceAuth.java @@ -20,6 +20,7 @@ import io.cloudbeaver.DBWService; import io.cloudbeaver.DBWebException; import io.cloudbeaver.WebAction; import io.cloudbeaver.model.session.WebSession; +import io.cloudbeaver.model.user.WebAuthProviderInfo; import java.util.Map; @@ -36,4 +37,7 @@ public interface DBWServiceAuth extends DBWService { @WebAction(requirePermissions = {}) WebAuthInfo sessionUser(WebSession webSession) throws DBWebException; + + @WebAction(requirePermissions = {}) + WebAuthProviderInfo[] getAuthProviders(WebSession webSession); } diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java index 3a2e1f1ce4..df9f3935e5 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebServiceBindingAuth.java @@ -17,7 +17,6 @@ package io.cloudbeaver.service.auth; import io.cloudbeaver.DBWebException; -import io.cloudbeaver.registry.WebServiceRegistry; import io.cloudbeaver.service.DBWBindingContext; import io.cloudbeaver.service.WebServiceBindingBase; import io.cloudbeaver.service.auth.impl.WebServiceAuthImpl; @@ -45,7 +44,7 @@ public class WebServiceBindingAuth extends WebServiceBindingBase return true; }) .dataFetcher("sessionUser", env -> getService(env).sessionUser(getWebSession(env))) - .dataFetcher("authProviders", env -> WebServiceRegistry.getInstance().getAuthProviders()) + .dataFetcher("authProviders", env -> getService(env).getAuthProviders(getWebSession(env))) ; } diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java index 1725eb52a4..6f9d1cbb2f 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java @@ -21,6 +21,7 @@ import io.cloudbeaver.DBWAuthProviderExternal; import io.cloudbeaver.DBWSecurityController; import io.cloudbeaver.DBWebException; import io.cloudbeaver.model.session.WebSession; +import io.cloudbeaver.model.user.WebAuthProviderInfo; import io.cloudbeaver.model.user.WebUser; import io.cloudbeaver.registry.WebAuthProviderDescriptor; import io.cloudbeaver.registry.WebServiceRegistry; @@ -126,4 +127,11 @@ public class WebServiceAuthImpl implements DBWServiceAuth { return webSession.getAttribute(ATTR_USER_AUTH); } + @Override + public WebAuthProviderInfo[] getAuthProviders(WebSession webSession) { + return WebServiceRegistry.getInstance().getAuthProviders() + .stream().map(WebAuthProviderInfo::new) + .toArray(WebAuthProviderInfo[]::new); + } + } diff --git a/server/product/web-server/CloudbeaverServer.product.launch b/server/product/web-server/CloudbeaverServer.product.launch index 4ef2d2d892..e1c56427f6 100644 --- a/server/product/web-server/CloudbeaverServer.product.launch +++ b/server/product/web-server/CloudbeaverServer.product.launch @@ -34,11 +34,11 @@ - - + + - +