From e143fa5558bcde09462e091acbe5f1dcc052bebe Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Thu, 28 Oct 2021 15:36:03 +0300 Subject: [PATCH] CB-1356 User meta parameters API --- .../schema/service.admin.graphqls | 8 +++++++ .../service/admin/DBWServiceAdmin.java | 9 ++++++++ .../service/admin/WebServiceBindingAdmin.java | 21 ++++++++++++++++++- .../service/admin/impl/WebServiceAdmin.java | 15 +++++++++++++ .../schema/service.auth.graphqls | 5 +++++ .../cloudbeaver/service/auth/WebUserInfo.java | 6 ++++++ 6 files changed, 63 insertions(+), 1 deletion(-) diff --git a/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls b/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls index 6a2afebf8a..7393ef7524 100644 --- a/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls +++ b/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls @@ -156,6 +156,14 @@ extend type Query { parameters: Object): AdminAuthProviderConfiguration! deleteAuthProviderConfiguration(id: ID!): Boolean! + #### User profile + + saveUserMetaParameter(id: ID!, displayName: String!, description: String, required: Boolean!): Boolean! + + deleteUserMetaParameter(id: ID!): Boolean! + + setUserMetaParameterValues(userId: ID!, parameters: Object!): Boolean! + #### Global configuration configureServer(configuration: ServerConfigInput!): Boolean! diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java index 58aeebb2f5..35a69c7d7b 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/DBWServiceAdmin.java @@ -140,4 +140,13 @@ public interface DBWServiceAdmin extends DBWService { @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) boolean setSubjectConnectionAccess(@NotNull WebSession webSession, @NotNull String subjectId, @NotNull List connections) throws DBWebException; + //////////////////////////////////////////////////////////////////// + // User meta parameters + + @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) + boolean saveUserMetaParameter(WebSession webSession, String id, String displayName, String description, Boolean required) throws DBWebException; + @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) + Object deleteUserMetaParameter(WebSession webSession, String id) throws DBWebException; + @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) + Object setUserMetaParameterValues(WebSession webSession, String userId, Map parameters) throws DBWebException; } diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java index a873c4e7bb..ed46598973 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java @@ -119,7 +119,26 @@ public class WebServiceBindingAdmin extends WebServiceBindingBase getService(env).deleteAuthProviderConfiguration(getWebSession(env), env.getArgument("id"))) - .dataFetcher("configureServer", + .dataFetcher("saveUserMetaParameter", + env -> getService(env).saveUserMetaParameter( + getWebSession(env), + env.getArgument("id"), + env.getArgument("displayName"), + env.getArgument("description"), + env.getArgument("required"))) + + .dataFetcher("deleteUserMetaParameter", + env -> getService(env).deleteUserMetaParameter( + getWebSession(env), + env.getArgument("id"))) + + .dataFetcher("setUserMetaParameterValues", + env -> getService(env).setUserMetaParameterValues( + getWebSession(env), + env.getArgument("userId"), + env.getArgument("parameters"))) + + .dataFetcher("configureServer", env -> getService(env).configureServer(getWebSession(env), new AdminServerConfig(env.getArgument("configuration")))) .dataFetcher("setDefaultNavigatorSettings", env -> getService(env).setDefaultNavigatorSettings(getWebSession(env), WebServiceUtils.parseNavigatorSettings(env.getArgument("settings")))) diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java index 75b7b161e1..86d298595f 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java @@ -594,4 +594,19 @@ public class WebServiceAdmin implements DBWServiceAdmin { return true; } + @Override + public boolean saveUserMetaParameter(WebSession webSession, String id, String displayName, String description, Boolean required) throws DBWebException { + throw new DBWebException("Not implemented"); + } + + @Override + public Object deleteUserMetaParameter(WebSession webSession, String id) throws DBWebException { + throw new DBWebException("Not implemented"); + } + + @Override + public Object setUserMetaParameterValues(WebSession webSession, String userId, Map parameters) throws DBWebException { + throw new DBWebException("Not implemented"); + } + } 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 595d2fd237..794e1058a4 100644 --- a/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls +++ b/server/bundles/io.cloudbeaver.service.auth/schema/service.auth.graphqls @@ -86,6 +86,9 @@ type UserInfo { authTokens: [UserAuthToken!]! linkedAuthProviders: [String!]! + + # User profile properties map + metaParameters: Object! } extend type Query { @@ -106,4 +109,6 @@ extend type Query { authChangeLocalPassword(oldPassword: String!, newPassword: String!): Boolean! + listUserProfileProperties: [ObjectPropertyInfo!]! + } 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 3aaf40c243..483aa83115 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 @@ -26,6 +26,7 @@ import org.jkiss.dbeaver.model.meta.Property; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -74,4 +75,9 @@ public class WebUserInfo { return Arrays.asList(linkedProviders); } + @Property + public Map getMetaParameters() { + return user.getMetaParameters(); + } + }