From bd95a8cde5327c1a225700aac9d40bd10858f95b Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Wed, 27 May 2020 17:10:57 +0300 Subject: [PATCH] CB-108 User credentials edit API --- .../schema/service.admin.graphqls | 2 ++ .../service/admin/DBWServiceAdmin.java | 4 ++++ .../service/admin/WebServiceBindingAdmin.java | 2 ++ .../service/admin/impl/WebServiceAdmin.java | 16 ++++++++++++++++ 4 files changed, 24 insertions(+) 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 6135c3a53f..5c53236518 100644 --- a/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls +++ b/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls @@ -40,4 +40,6 @@ extend type Query { setRolePermissions(roleId: ID!, permissions: [ID]!): Boolean + setUserCredentials(userId: ID!, providerId: ID!, credentials: Object!): 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 63ff2bf6ed..161379e8e6 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 @@ -24,6 +24,7 @@ import org.jkiss.code.NotNull; import org.jkiss.code.Nullable; import java.util.List; +import java.util.Map; /** * Web service API @@ -65,4 +66,7 @@ public interface DBWServiceAdmin extends DBWService { @WebAction(requirePermissions = AdminPermissions.PERMISSION_ADMIN) boolean setRolePermissions(@NotNull WebSession webSession, String roleID, String[] permissions) throws DBWebException; + @WebAction(requirePermissions = AdminPermissions.PERMISSION_ADMIN) + boolean setUserCredentials(@NotNull WebSession webSession, @NotNull String userID, @NotNull String providerId, @NotNull Map credentials) 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 2506cdfd9f..8d278796bf 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 @@ -55,6 +55,8 @@ public class WebServiceBindingAdmin extends WebServiceBindingBase getService(env).revokeUserRole(getWebSession(env), env.getArgument("userId"), env.getArgument("userId"))); model.getQueryType().dataFetcher("setRolePermissions", env -> getService(env).setRolePermissions(getWebSession(env), env.getArgument("roleId"), env.getArgument("permissions"))); + model.getQueryType().dataFetcher("setUserCredentials", + env -> getService(env).setUserCredentials(getWebSession(env), env.getArgument("userId"), env.getArgument("providerId"), env.getArgument("credentials"))); } } 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 4c0cf9f294..41a776db74 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 @@ -20,6 +20,7 @@ import io.cloudbeaver.DBWebException; import io.cloudbeaver.model.session.WebSession; import io.cloudbeaver.model.user.WebRole; import io.cloudbeaver.model.user.WebUser; +import io.cloudbeaver.registry.WebAuthProviderDescriptor; import io.cloudbeaver.registry.WebPermissionDescriptor; import io.cloudbeaver.registry.WebServiceDescriptor; import io.cloudbeaver.registry.WebServiceRegistry; @@ -34,6 +35,7 @@ import org.jkiss.utils.ArrayUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Map; /** * Web service implementation @@ -184,4 +186,18 @@ public class WebServiceAdmin implements DBWServiceAdmin { throw new DBWebException("Error setting role permissions", e); } } + + @Override + public boolean setUserCredentials(@NotNull WebSession webSession, @NotNull String userID, @NotNull String providerId, @NotNull Map credentials) throws DBWebException { + WebAuthProviderDescriptor authProvider = WebServiceRegistry.getInstance().getAuthProvider(providerId); + if (authProvider == null) { + throw new DBWebException("Invalid auth provider '" + providerId + "'"); + } + try { + CBPlatform.getInstance().getApplication().getSecurityController().setUserCredentials(userID, authProvider, credentials); + return true; + } catch (Exception e) { + throw new DBWebException("Error setting user credentials", e); + } + } }