Auth API: sessionUser implementation

This commit is contained in:
serge-rider
2020-05-12 15:21:36 +03:00
parent 9d80804cae
commit 633d649ac5
4 changed files with 25 additions and 10 deletions
@@ -34,4 +34,6 @@ public interface DBWServiceAuth extends DBWService {
@WebAction()
void authLogout(WebSession webSession) throws DBWebException;
@WebAction()
WebAuthInfo sessionUser(WebSession webSession) throws DBWebException;
}
@@ -36,20 +36,15 @@ public class WebServiceBindingAuth extends WebServiceBindingBase<DBWServiceAuth>
@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())
;
@@ -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<String, Object> 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);
}
}
@@ -25,7 +25,12 @@
<stringAttribute key="productFile" value="\web-server\DBeaverWebServer.product"/>
<setAttribute key="selected_features">
<setEntry value="io.cloudbeaver.ce.drivers.feature:default"/>
<setEntry value="io.cloudbeaver.ee.db.feature:default"/>
<setEntry value="io.cloudbeaver.ee.drivers.feature:default"/>
<setEntry value="io.cloudbeaver.product.ce.feature:default"/>
<setEntry value="io.cloudbeaver.product.ee.feature:default"/>
<setEntry value="io.cloudbeaver.sample.feature:default"/>
<setEntry value="io.cloudbeaver.server.feature:default"/>
<setEntry value="org.jkiss.dbeaver.db.feature:default"/>
<setEntry value="org.jkiss.dbeaver.runtime.feature:default"/>
</setAttribute>