diff --git a/deploy/build.bat b/deploy/build.bat
index c47b1e1009..d775a8582b 100644
--- a/deploy/build.bat
+++ b/deploy/build.bat
@@ -44,8 +44,8 @@ cd ..\deploy
echo Copy static content
-xcopy /E /Q ..\webapp\packages\dbeaver\dist cloudbeaver\web >NUL
+xcopy /E /Q ..\webapp\packages\cloudbeaver\dist cloudbeaver\web >NUL
echo Cloudbeaver is ready. Run run-server.bat in cloudbeaver folder to start the server.
-pause
\ No newline at end of file
+pause
diff --git a/deploy/build.sh b/deploy/build.sh
index 5c823ced3c..4c7d04a5c8 100755
--- a/deploy/build.sh
+++ b/deploy/build.sh
@@ -43,6 +43,6 @@ cd ../deploy
echo "Copy static content"
-cp -rp ../webapp/packages/dbeaver/dist/* cloudbeaver/web
+cp -rp ../webapp/packages/cloudbeaver/dist/* cloudbeaver/web
echo "Cloudbeaver is ready. Run run-server.bat in cloudbeaver folder to start the server."
diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF
index d1625f484c..e78a17f702 100644
--- a/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.connect.provider.sample/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.connect.provider.sample;singleton:=true
-Bundle-Version: 1.0.5.qualifier
-Bundle-Release-Date: 20200518
+Bundle-Version: 1.0.6.qualifier
+Bundle-Release-Date: 20200601
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml b/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml
index 67c58f4b85..f6cfaadde1 100644
--- a/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml
+++ b/server/bundles/io.cloudbeaver.connect.provider.sample/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.connect.provider.sample
- 1.0.5-SNAPSHOT
+ 1.0.6-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF
index 5ab20a92a4..1959d74ba2 100644
--- a/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.product.ce/META-INF/MANIFEST.MF
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.product.ce;singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Release-Date: 20200518
+Bundle-Version: 1.0.1.qualifier
+Bundle-Release-Date: 20200601
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
diff --git a/server/bundles/io.cloudbeaver.product.ce/pom.xml b/server/bundles/io.cloudbeaver.product.ce/pom.xml
index 61d40947c1..b834eb78ad 100644
--- a/server/bundles/io.cloudbeaver.product.ce/pom.xml
+++ b/server/bundles/io.cloudbeaver.product.ce/pom.xml
@@ -10,7 +10,7 @@
../
io.cloudbeaver.product.ce
- 1.0.0-SNAPSHOT
+ 1.0.1-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF
index 3b3316f820..a599a3ba2f 100644
--- a/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.resources.drivers.base/META-INF/MANIFEST.MF
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Base JDBC drivers
Bundle-SymbolicName: io.cloudbeaver.resources.drivers.base;singleton:=true
-Bundle-Version: 1.0.2.qualifier
-Bundle-Release-Date: 20200518
+Bundle-Version: 1.0.3.qualifier
+Bundle-Release-Date: 20200601
Bundle-Vendor: DBeaver Corp
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: io.cloudbeaver.resources.drivers.base
diff --git a/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml b/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml
index d534aeeeb9..3a78917692 100644
--- a/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml
+++ b/server/bundles/io.cloudbeaver.resources.drivers.base/pom.xml
@@ -9,6 +9,6 @@
../
io.cloudbeaver.resources.drivers.base
- 1.0.2-SNAPSHOT
+ 1.0.3-SNAPSHOT
eclipse-plugin
diff --git a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF
index b8a8e50753..de42abd84c 100644
--- a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF
+++ b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF
@@ -4,7 +4,7 @@ Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: io.cloudbeaver.server;singleton:=true
Bundle-Version: 1.0.2.qualifier
-Bundle-Release-Date: 20200518
+Bundle-Release-Date: 20200601
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-Activator: io.cloudbeaver.server.WebPlatformActivator
diff --git a/server/bundles/io.cloudbeaver.server/plugin.xml b/server/bundles/io.cloudbeaver.server/plugin.xml
index bd1a05c3f0..2a8cf1ae8e 100644
--- a/server/bundles/io.cloudbeaver.server/plugin.xml
+++ b/server/bundles/io.cloudbeaver.server/plugin.xml
@@ -20,7 +20,7 @@
-
+
diff --git a/server/bundles/io.cloudbeaver.server/schema/service.sql.graphqls b/server/bundles/io.cloudbeaver.server/schema/service.sql.graphqls
index 0442ccd4a0..2140aa96eb 100644
--- a/server/bundles/io.cloudbeaver.server/schema/service.sql.graphqls
+++ b/server/bundles/io.cloudbeaver.server/schema/service.sql.graphqls
@@ -62,6 +62,7 @@ input SQLDataFilter {
constraints: [ SQLDataFilterConstraint ]
where: String
+ orderBy: String
}
type SQLResultColumn {
diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWSecurityController.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWSecurityController.java
index a607caab1f..480e4d945f 100644
--- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWSecurityController.java
+++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWSecurityController.java
@@ -42,10 +42,14 @@ public interface DBWSecurityController {
void setUserRoles(String userId, String[] roleIds, String grantorId) throws DBCException;
+ @NotNull
WebRole[] getUserRoles(String userId) throws DBCException;
WebUser getUserById(String userId) throws DBCException;
+ @NotNull
+ WebUser[] findUsers(String userNameMask) throws DBCException;
+
///////////////////////////////////////////
// Credentials
@@ -69,8 +73,11 @@ public interface DBWSecurityController {
///////////////////////////////////////////
// Roles
+ @NotNull
WebRole[] readAllRoles() throws DBCException;
+ WebRole[] findRoles(String roleName) throws DBCException;
+
void createRole(WebRole role) throws DBCException;
void deleteRole(String roleId) throws DBCException;
@@ -80,8 +87,10 @@ public interface DBWSecurityController {
void setSubjectPermissions(String subjectId, String[] permissionIds, String grantorId) throws DBCException;
+ @NotNull
Set getSubjectPermissions(String subjectId) throws DBCException;
+ @NotNull
Set getUserPermissions(String userId) throws DBCException;
///////////////////////////////////////////
@@ -94,7 +103,8 @@ public interface DBWSecurityController {
void updateSession(WebSession session) throws DBCException;
///////////////////////////////////////////
- // Meta info
+ // Permissions
+
///////////////////////////////////////////
// Utils
diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWebException.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWebException.java
index 5a8fb394c3..94b1bcd53f 100644
--- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWebException.java
+++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/DBWebException.java
@@ -39,6 +39,9 @@ import java.util.Map;
public class DBWebException extends DBException implements GraphQLError {
public static final String ERROR_CODE_SESSION_EXPIRED = "sessionExpired";
+ public static final String ERROR_CODE_ACCESS_DENIED = "accessDenied";
+ public static final String ERROR_CODE_IDENT_REQUIRED = "identRequired";
+ public static final String ERROR_CODE_AUTH_REQUIRED = "authRequired";
private List