mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
Auth API: sessionUser implementation
This commit is contained in:
+2
@@ -34,4 +34,6 @@ public interface DBWServiceAuth extends DBWService {
|
||||
@WebAction()
|
||||
void authLogout(WebSession webSession) throws DBWebException;
|
||||
|
||||
@WebAction()
|
||||
WebAuthInfo sessionUser(WebSession webSession) throws DBWebException;
|
||||
}
|
||||
|
||||
+5
-10
@@ -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())
|
||||
;
|
||||
|
||||
|
||||
+13
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user