mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-1995 resource controller checks prefixes (#841)
* CB-1995 resource controller checks prefixes * CB-1995 rm project name fix * CB-1995 rm project name fix * CB-1995 rm controller security is shared fix
This commit is contained in:
@@ -21,6 +21,7 @@ Export-Package: io.cloudbeaver,
|
||||
io.cloudbeaver.auth.provider.local,
|
||||
io.cloudbeaver.model,
|
||||
io.cloudbeaver.model.app,
|
||||
io.cloudbeaver.model.rm.local,
|
||||
io.cloudbeaver.model.session,
|
||||
io.cloudbeaver.model.user,
|
||||
io.cloudbeaver.server,
|
||||
|
||||
+38
-10
@@ -302,16 +302,9 @@ public class LocalResourceController implements RMController {
|
||||
|
||||
|
||||
private Path getProjectPath(String projectId) throws DBException {
|
||||
String prefix;
|
||||
String projectName;
|
||||
int divPos = projectId.indexOf("_");
|
||||
if (divPos < 0) {
|
||||
prefix = PROJECT_PREFIX_USER;
|
||||
projectName = projectId;
|
||||
} else {
|
||||
prefix = projectId.substring(0, divPos + 1);
|
||||
projectName = projectId.substring(divPos + 1);
|
||||
}
|
||||
RMProjectName project = parseProjectName(projectId);
|
||||
String prefix = project.getPrefix();
|
||||
String projectName = project.getName();
|
||||
switch (prefix) {
|
||||
case PROJECT_PREFIX_GLOBAL:
|
||||
if (!projectName.equals(globalProjectName)) {
|
||||
@@ -395,4 +388,39 @@ public class LocalResourceController implements RMController {
|
||||
return new LocalResourceController(credentialsProvider, rootPath, userProjectsPath, sharedProjectsPath);
|
||||
}
|
||||
}
|
||||
|
||||
public static class RMProjectName {
|
||||
String prefix;
|
||||
String name;
|
||||
private RMProjectName(String prefix, String name) {
|
||||
this.prefix = prefix;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getPrefix() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
public static RMProjectName parseProjectName(String projectId) {
|
||||
String prefix;
|
||||
String name;
|
||||
int divPos = projectId.indexOf("_");
|
||||
if (divPos < 0) {
|
||||
prefix = PROJECT_PREFIX_USER;
|
||||
name = projectId;
|
||||
} else {
|
||||
prefix = projectId.substring(0, divPos + 1);
|
||||
name = projectId.substring(divPos + 1);
|
||||
}
|
||||
return new RMProjectName(prefix, name);
|
||||
}
|
||||
|
||||
public static boolean isShared(String projectId) {
|
||||
return PROJECT_PREFIX_SHARED.equals(parseProjectName(projectId).getPrefix());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user