mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-10-24 01:23:21 +08:00
CB-2406 grant project-admin permission for admins
This commit is contained in:
+9
-4
@@ -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);
|
||||
}
|
||||
|
||||
+3
-2
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user