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 7bb9a97832..87c42c4d86 100644 --- a/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls +++ b/server/bundles/io.cloudbeaver.service.admin/schema/service.admin.graphqls @@ -118,7 +118,7 @@ extend type Query { grantUserRole(userId: ID!, roleId: ID!): Boolean revokeUserRole(userId: ID!, roleId: ID!): Boolean - setSubjectPermissions(roleId: ID!, permissions: [ID!]!): Boolean + setSubjectPermissions(roleId: ID!, permissions: [ID!]!): [AdminPermissionInfo]! setUserCredentials(userId: ID!, providerId: ID!, credentials: Object!): Boolean diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminPermissionInfo.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminPermissionInfo.java index c07c7a2947..176aed7283 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminPermissionInfo.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/AdminPermissionInfo.java @@ -45,4 +45,8 @@ public class AdminPermissionInfo { return permission.getCategory(); } + public String getProvider() { + return permission.getService().getLabel(); + } + } 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 bee2ba2381..567340587d 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 @@ -76,7 +76,7 @@ public interface DBWServiceAdmin extends DBWService { boolean revokeUserRole(@NotNull WebSession webSession, String user, String role) throws DBWebException; @WebAction(requirePermissions = DBWConstants.PERMISSION_ADMIN) - boolean setSubjectPermissions(@NotNull WebSession webSession, String roleID, List permissions) throws DBWebException; + List setSubjectPermissions(@NotNull WebSession webSession, String roleID, List permissions) throws DBWebException; @WebAction(requirePermissions = DBWConstants.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/impl/WebServiceAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/impl/WebServiceAdmin.java index 53d746d953..833cfc7da1 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 @@ -56,10 +56,7 @@ import org.jkiss.dbeaver.registry.auth.AuthProviderDescriptor; import org.jkiss.dbeaver.registry.auth.AuthProviderRegistry; import org.jkiss.utils.CommonUtils; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -254,7 +251,7 @@ public class WebServiceAdmin implements DBWServiceAdmin { } @Override - public boolean setSubjectPermissions(@NotNull WebSession webSession, String roleID, List permissions) throws DBWebException { + public List setSubjectPermissions(@NotNull WebSession webSession, String roleID, List permissions) throws DBWebException { WebUser grantor = webSession.getUser(); if (grantor == null) { throw new DBWebException("Cannot change permissions in anonymous mode"); @@ -263,7 +260,11 @@ public class WebServiceAdmin implements DBWServiceAdmin { try { webSession.getAdminSecurityController().setSubjectPermissions(roleID, permissions, grantor.getUserId()); - return true; + Set subjectPermissions = webSession.getAdminSecurityController().getSubjectPermissions(roleID); + webSession.refreshUserData(); + return listPermissions(webSession).stream() + .filter(p -> subjectPermissions.contains(p.getId())) + .collect(Collectors.toList()); } catch (Exception e) { throw new DBWebException("Error setting role permissions", e); }