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 ba4cb40d2c..3fe4094cc1 100644 --- a/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls +++ b/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls @@ -98,6 +98,9 @@ type UserInfo { # User profile properties map metaParameters: Object! + + # USer configuiraiton parameters + configurationParameters: Object! } extend type Query { @@ -121,3 +124,10 @@ extend type Query { listUserProfileProperties: [ObjectPropertyInfo!]! } + +extend type Mutation { + + # Set user config parameter. If parameter value is null then removes the parameter + setUserConfigurationParameter(name: String!, value: Object): Boolean! + +} 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 4528ad1703..ca9d7c4781 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 @@ -59,4 +59,11 @@ public interface DBWServiceAuth extends DBWService { @WebAction() WebPropertyInfo[] listUserProfileProperties(@NotNull WebSession webSession); + + @WebAction() + boolean setUserConfigurationParameter( + @NotNull WebSession webSession, + @NotNull String name, + @Nullable String value) throws DBWebException; + } diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebUserInfo.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebUserInfo.java index e68e462e95..11b03f5553 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebUserInfo.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/WebUserInfo.java @@ -69,7 +69,7 @@ public class WebUserInfo { linkedProviders = CBApplication.getInstance().getSecurityController() .getUserLinkedProviders(session.getUser().getUserId()); } catch (DBCException e) { - throw new DBWebException("Error reading user linked providers"); + throw new DBWebException("Error reading user linked providers", e); } } return Arrays.asList(linkedProviders); @@ -80,4 +80,13 @@ public class WebUserInfo { return user.getMetaParameters(); } + @Property + public Map getConfigurationParameters() throws DBWebException { + try { + return CBApplication.getInstance().getSecurityController().getUserParameters(user.getUserId()); + } catch (DBCException e) { + throw new DBWebException("Error reading user parameters", e); + } + } + } 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 f04cf9ce37..bc8269f1be 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 @@ -318,4 +318,17 @@ public class WebServiceAuthImpl implements DBWServiceAuth { .toArray(WebPropertyInfo[]::new); } + @Override + public boolean setUserConfigurationParameter(@NotNull WebSession webSession, @NotNull String name, @Nullable String value) throws DBWebException { + try { + CBApplication.getInstance().getSecurityController().setUserParameter( + webSession.getUser().getUserId(), + name, + value); + return true; + } catch (DBCException e) { + throw new DBWebException("Error setting user parameter", e); + } + } + }