mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-10-12 23:37:00 +08:00
dbeaver/pro#1253 team edition datasets (#1364)
* dbeaver/pro#1253 Resource types mode, project permissions refactoring, GQL endpoint * dbeaver/pro#1253 Resource type file extensions
This commit is contained in:
@@ -81,7 +81,7 @@ public class RMUtils {
|
||||
RMProject project = new RMProject("anonymous");
|
||||
project.setId("anonymous");
|
||||
project.setType(RMProjectType.USER);
|
||||
project.setProjectPermissions(RMProjectPermission.DATA_SOURCES_EDIT.getAllPermissions());
|
||||
project.setProjectPermissions(RMProjectPermission.DATA_SOURCES_EDIT.getAllPermissions().toArray(new String[0]));
|
||||
return project;
|
||||
}
|
||||
}
|
||||
|
||||
+12
-7
@@ -169,7 +169,7 @@ public class LocalResourceController implements RMController {
|
||||
.stream()
|
||||
.map(projectPermission -> makeProjectFromPath(
|
||||
sharedProjectsPath.resolve(parseProjectName(projectPermission.getObjectId()).getName()),
|
||||
projectPermission.getPermissions().stream().map(RMProjectPermission::fromPermission).collect(Collectors.toSet()),
|
||||
Arrays.stream(projectPermission.getPermissions()).map(RMProjectPermission::fromPermission).collect(Collectors.toSet()),
|
||||
RMProjectType.SHARED, true)
|
||||
)
|
||||
.filter(Objects::nonNull)
|
||||
@@ -193,9 +193,9 @@ public class LocalResourceController implements RMController {
|
||||
throw new DBException("Project id required");
|
||||
}
|
||||
|
||||
return getSecurityController().getObjectPermissions(activeUserCreds.getUserId(), projectId, SMObjects.PROJECT)
|
||||
.getPermissions()
|
||||
.stream()
|
||||
String[] permissions = getSecurityController().getObjectPermissions(activeUserCreds.getUserId(), projectId, SMObjects.PROJECT)
|
||||
.getPermissions();
|
||||
return Arrays.stream(permissions)
|
||||
.map(RMProjectPermission::fromPermission)
|
||||
.collect(Collectors.toSet());
|
||||
case USER:
|
||||
@@ -635,9 +635,9 @@ public class LocalResourceController implements RMController {
|
||||
return null;
|
||||
}
|
||||
|
||||
Set<String> allProjectPermissions = permissions.stream()
|
||||
String[] allProjectPermissions = permissions.stream()
|
||||
.flatMap(rmProjectPermission -> rmProjectPermission.getAllPermissions().stream())
|
||||
.collect(Collectors.toSet());
|
||||
.toArray(String[]::new);
|
||||
|
||||
RMProject project = new RMProject();
|
||||
String projectName = path.getFileName().toString();
|
||||
@@ -653,11 +653,16 @@ public class LocalResourceController implements RMController {
|
||||
log.error(e);
|
||||
}
|
||||
}
|
||||
// Resource types
|
||||
project.setResourceTypes(ResourceTypeRegistry.getInstance().getResourceTypes()
|
||||
.stream()
|
||||
.filter(ResourceTypeDescriptor::isManagable)
|
||||
.map(RMResourceType::new)
|
||||
.toArray(RMResourceType[]::new));
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
|
||||
private Path getProjectPath(String projectId) throws DBException {
|
||||
RMProjectName project = parseProjectName(projectId);
|
||||
RMProjectType type = project.getType();
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ public class SMUtils {
|
||||
RMProject project,
|
||||
RMProjectPermission projectPermission
|
||||
) {
|
||||
return isRMAdmin(credentialsProvider) || project.getProjectPermissions().contains(projectPermission.getPermissionId());
|
||||
return isRMAdmin(credentialsProvider) || project.hasProjectPermission(projectPermission.getPermissionId());
|
||||
}
|
||||
|
||||
public static List<AdminPermissionInfo> findPermissions(@NotNull String permissionsScope) {
|
||||
|
||||
@@ -62,6 +62,7 @@ import org.jkiss.dbeaver.utils.ContentUtils;
|
||||
import org.jkiss.dbeaver.utils.GeneralUtils;
|
||||
import org.jkiss.dbeaver.utils.PrefUtils;
|
||||
import org.jkiss.dbeaver.utils.SystemVariablesResolver;
|
||||
import org.jkiss.utils.ArrayUtils;
|
||||
import org.jkiss.utils.CommonUtils;
|
||||
import org.jkiss.utils.StandardConstants;
|
||||
|
||||
@@ -863,7 +864,7 @@ public class CBApplication extends BaseWebApplication implements WebAuthApplicat
|
||||
var securityController = getSecurityController();
|
||||
for (DBPDataSourceContainer ds : WebServiceUtils.getGlobalDataSourceRegistry().getDataSources()) {
|
||||
var datasourcePermissions = securityController.getObjectPermissions(anonymousTeamId, ds.getId(), SMObjects.DATASOURCE);
|
||||
if (CommonUtils.isEmpty(datasourcePermissions.getPermissions())) {
|
||||
if (ArrayUtils.isEmpty(datasourcePermissions.getPermissions())) {
|
||||
securityController.setObjectPermissions(
|
||||
Set.of(ds.getId()),
|
||||
SMObjects.DATASOURCE,
|
||||
|
||||
+1
-1
@@ -223,7 +223,7 @@ public abstract class WebServiceBindingBase<API_TYPE extends DBWService> impleme
|
||||
RMProject rmProject = project.getRmProject();
|
||||
|
||||
for (String reqProjectPermission : requireProjectPermissions) {
|
||||
if (!rmProject.getProjectPermissions().contains(reqProjectPermission)) {
|
||||
if (!rmProject.hasProjectPermission(reqProjectPermission)) {
|
||||
throw new DBWebExceptionAccessDenied("Access denied");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ type RMProject {
|
||||
createTime: DateTime!
|
||||
creator: String!
|
||||
projectPermissions: [String!]!
|
||||
resourceTypes: [RMResourceType!]!
|
||||
}
|
||||
|
||||
type RMResource {
|
||||
@@ -20,6 +21,14 @@ type RMResource {
|
||||
properties: Object
|
||||
}
|
||||
|
||||
type RMResourceType {
|
||||
id: String!
|
||||
displayName: String!
|
||||
icon: String
|
||||
fileExtensions: String
|
||||
rootFolder: String
|
||||
}
|
||||
|
||||
input RMSubjectProjectPermissions {
|
||||
subjectId: String!
|
||||
permissions: [String!]!
|
||||
|
||||
Reference in New Issue
Block a user