CB-2406 grant project-admin permission for admins

This commit is contained in:
Aleksandr Skoblikov
2022-09-13 18:15:41 +03:00
parent f350df21a5
commit 1a8621439c
2 changed files with 12 additions and 6 deletions
@@ -19,6 +19,7 @@ package io.cloudbeaver.model.rm.local;
import io.cloudbeaver.DBWConstants;
import io.cloudbeaver.VirtualProjectImpl;
import io.cloudbeaver.model.rm.RMUtils;
import io.cloudbeaver.service.security.SMUtils;
import io.cloudbeaver.service.sql.WebSQLConstants;
import io.cloudbeaver.utils.WebAppUtils;
import org.eclipse.core.runtime.IPath;
@@ -172,20 +173,24 @@ public class LocalResourceController implements RMController {
switch (projectType) {
case GLOBAL:
return credentialsProvider.hasPermission(DBWConstants.PERMISSION_ADMIN)
? Set.of(RMProjectPermission.RESOURCE_EDIT, RMProjectPermission.DATA_SOURCES_EDIT)
return SMUtils.isRMAdmin(credentialsProvider)
? Set.of(RMProjectPermission.PROJECT_ADMIN)
: Set.of(RMProjectPermission.RESOURCE_VIEW, RMProjectPermission.DATA_SOURCES_VIEW);
case SHARED:
if(projectId == null) {
if (projectId == null) {
throw new DBException("Project id required");
}
if (SMUtils.isRMAdmin(credentialsProvider)) {
return Set.of(RMProjectPermission.PROJECT_ADMIN);
}
return smController.getObjectPermissions(activeUserCreds.getUserId(), projectId, SMObjects.PROJECT)
.getPermissions()
.stream()
.map(RMProjectPermission::fromPermission)
.collect(Collectors.toSet());
case USER:
return Set.of(RMProjectPermission.RESOURCE_EDIT, RMProjectPermission.DATA_SOURCES_EDIT);
return Set.of(RMProjectPermission.RESOURCE_EDIT, RMProjectPermission.DATA_SOURCES_EDIT);
default:
throw new DBException("Unknown project type:" + projectType);
}
@@ -7,6 +7,7 @@ import io.cloudbeaver.registry.WebServiceDescriptor;
import io.cloudbeaver.registry.WebServiceRegistry;
import io.cloudbeaver.service.admin.AdminPermissionInfo;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.auth.SMCredentialsProvider;
import org.jkiss.dbeaver.model.rm.RMConstants;
import org.jkiss.dbeaver.model.security.SMConstants;
@@ -14,11 +15,11 @@ import java.util.ArrayList;
import java.util.List;
public class SMUtils {
public static boolean isAdmin(WebSession webSession) {
public static boolean isAdmin(SMCredentialsProvider webSession) {
return webSession.hasPermission(DBWConstants.PERMISSION_ADMIN);
}
public static boolean isRMAdmin(WebSession webSession) {
public static boolean isRMAdmin(SMCredentialsProvider webSession) {
return isAdmin(webSession) || webSession.hasPermission(RMConstants.PERMISSION_RM_ADMIN);
}