From 633d649ac5018f730e7f01991be8408f820e5c12 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Tue, 12 May 2020 15:21:36 +0300 Subject: [PATCH] Auth API: sessionUser implementation --- .../cloudbeaver/service/auth/DBWServiceAuth.java | 2 ++ .../service/auth/WebServiceBindingAuth.java | 15 +++++---------- .../service/auth/impl/WebServiceAuthImpl.java | 13 +++++++++++++ .../web-server/CloudbeaverServer.product.launch | 5 +++++ 4 files changed, 25 insertions(+), 10 deletions(-) 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 2dd79fb11c..35e41da1aa 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 @@ -34,4 +34,6 @@ public interface DBWServiceAuth extends DBWService { @WebAction() void authLogout(WebSession webSession) throws DBWebException; + @WebAction() + WebAuthInfo sessionUser(WebSession webSession) throws DBWebException; } 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 b5a6eb5a7d..3a2e1f1ce4 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 @@ -36,20 +36,15 @@ public class WebServiceBindingAuth extends WebServiceBindingBase @Override public void bindWiring(DBWBindingContext model) throws DBWebException { model.getQueryType() - .dataFetcher("authLogin", env -> { - return getService(env).authLogin( - getWebSession(env), - env.getArgument("provider"), - env.getArgument("credentials")); - }) + .dataFetcher("authLogin", env -> getService(env).authLogin( + getWebSession(env), + env.getArgument("provider"), + env.getArgument("credentials"))) .dataFetcher("authLogout", env -> { getService(env).authLogout(getWebSession(env)); return true; }) - .dataFetcher("sessionUser", env -> { - Object context = env.getContext(); - throw new DBWebException("Not implemented"); - }) + .dataFetcher("sessionUser", env -> getService(env).sessionUser(getWebSession(env))) .dataFetcher("authProviders", env -> WebServiceRegistry.getInstance().getAuthProviders()) ; 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 7dddc1d2e2..1725eb52a4 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 @@ -41,6 +41,8 @@ import java.util.Map; */ public class WebServiceAuthImpl implements DBWServiceAuth { + private static final String ATTR_USER_AUTH = "user-auth-info"; + @Override public WebAuthInfo authLogin(WebSession webSession, String providerId, Map authParameters) throws DBWebException { if (!CBApplication.getInstance().getAppConfiguration().isAuthenticationEnabled()) { @@ -100,6 +102,8 @@ public class WebServiceAuthImpl implements DBWServiceAuth { authInfo.setAuthToken(authToken); authInfo.setMessage("Authenticated with " + authProvider.getLabel() + " provider"); + webSession.setAttribute(ATTR_USER_AUTH, authInfo); + return authInfo; } catch (DBException e) { throw new DBWebException("User authentication failed", e); @@ -113,4 +117,13 @@ public class WebServiceAuthImpl implements DBWServiceAuth { } webSession.setUser(null); } + + @Override + public WebAuthInfo sessionUser(WebSession webSession) throws DBWebException { + if (webSession.getUser() == null) { + return null; + } + return webSession.getAttribute(ATTR_USER_AUTH); + } + } diff --git a/server/product/web-server/CloudbeaverServer.product.launch b/server/product/web-server/CloudbeaverServer.product.launch index 547df1b452..4ef2d2d892 100644 --- a/server/product/web-server/CloudbeaverServer.product.launch +++ b/server/product/web-server/CloudbeaverServer.product.launch @@ -25,7 +25,12 @@ + + + + +