mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
CB-422 Easy config fix (def options + admin permissions). Schema update
This commit is contained in:
@@ -9,18 +9,18 @@ CREATE TABLE CB_SERVER(
|
||||
);
|
||||
|
||||
CREATE TABLE CB_AUTH_SUBJECT(
|
||||
SUBJECT_ID VARCHAR(64) NOT NULL,
|
||||
SUBJECT_ID VARCHAR(128) NOT NULL,
|
||||
SUBJECT_TYPE VARCHAR(8) NOT NULL,
|
||||
|
||||
PRIMARY KEY(SUBJECT_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE CB_AUTH_PERMISSIONS(
|
||||
SUBJECT_ID VARCHAR(32) NOT NULL,
|
||||
SUBJECT_ID VARCHAR(128) NOT NULL,
|
||||
PERMISSION_ID VARCHAR(64) NOT NULL,
|
||||
|
||||
GRANT_TIME TIMESTAMP NOT NULL,
|
||||
GRANTED_BY VARCHAR(64) NOT NULL,
|
||||
GRANTED_BY VARCHAR(128) NOT NULL,
|
||||
|
||||
PRIMARY KEY(SUBJECT_ID,PERMISSION_ID),
|
||||
FOREIGN KEY(SUBJECT_ID) REFERENCES CB_AUTH_SUBJECT(SUBJECT_ID) ON DELETE CASCADE
|
||||
@@ -28,17 +28,17 @@ CREATE TABLE CB_AUTH_PERMISSIONS(
|
||||
|
||||
CREATE TABLE CB_DATASOURCE_ACCESS(
|
||||
DATASOURCE_ID VARCHAR(128) NOT NULL,
|
||||
SUBJECT_ID VARCHAR(32) NOT NULL,
|
||||
SUBJECT_ID VARCHAR(128) NOT NULL,
|
||||
|
||||
GRANT_TIME TIMESTAMP NOT NULL,
|
||||
GRANTED_BY VARCHAR(64) NOT NULL,
|
||||
GRANTED_BY VARCHAR(128) NOT NULL,
|
||||
|
||||
PRIMARY KEY(SUBJECT_ID,DATASOURCE_ID),
|
||||
FOREIGN KEY(SUBJECT_ID) REFERENCES CB_AUTH_SUBJECT(SUBJECT_ID) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE CB_USER(
|
||||
USER_ID VARCHAR(64) NOT NULL,
|
||||
USER_ID VARCHAR(128) NOT NULL,
|
||||
|
||||
IS_ACTIVE CHAR(1) NOT NULL,
|
||||
CREATE_TIME TIMESTAMP NOT NULL,
|
||||
@@ -49,7 +49,7 @@ CREATE TABLE CB_USER(
|
||||
|
||||
-- Additional user properties (profile)
|
||||
CREATE TABLE CB_USER_META(
|
||||
USER_ID VARCHAR(64) NOT NULL,
|
||||
USER_ID VARCHAR(128) NOT NULL,
|
||||
META_ID VARCHAR(32) NOT NULL,
|
||||
META_VALUE VARCHAR(1024),
|
||||
|
||||
@@ -58,7 +58,7 @@ CREATE TABLE CB_USER_META(
|
||||
);
|
||||
|
||||
CREATE TABLE CB_ROLE(
|
||||
ROLE_ID VARCHAR(32) NOT NULL,
|
||||
ROLE_ID VARCHAR(128) NOT NULL,
|
||||
ROLE_NAME VARCHAR(100) NOT NULL,
|
||||
ROLE_DESCRIPTION VARCHAR(255) NOT NULL,
|
||||
|
||||
@@ -69,11 +69,11 @@ CREATE TABLE CB_ROLE(
|
||||
);
|
||||
|
||||
CREATE TABLE CB_USER_ROLE(
|
||||
USER_ID VARCHAR(64) NOT NULL,
|
||||
ROLE_ID VARCHAR(32) NOT NULL,
|
||||
USER_ID VARCHAR(128) NOT NULL,
|
||||
ROLE_ID VARCHAR(128) NOT NULL,
|
||||
|
||||
GRANT_TIME TIMESTAMP NOT NULL,
|
||||
GRANTED_BY VARCHAR(32) NOT NULL,
|
||||
GRANTED_BY VARCHAR(128) NOT NULL,
|
||||
|
||||
PRIMARY KEY(USER_ID,ROLE_ID),
|
||||
FOREIGN KEY(USER_ID) REFERENCES CB_USER(USER_ID) ON DELETE CASCADE,
|
||||
@@ -97,7 +97,7 @@ CREATE TABLE CB_AUTH_CONFIGURATION(
|
||||
);
|
||||
|
||||
CREATE TABLE CB_USER_CREDENTIALS(
|
||||
USER_ID VARCHAR(64) NOT NULL,
|
||||
USER_ID VARCHAR(128) NOT NULL,
|
||||
PROVIDER_ID VARCHAR(32) NOT NULL,
|
||||
CRED_ID VARCHAR(32) NOT NULL,
|
||||
CRED_VALUE VARCHAR(1024) NOT NULL,
|
||||
@@ -109,7 +109,7 @@ CREATE TABLE CB_USER_CREDENTIALS(
|
||||
CREATE INDEX CB_USER_CREDENTIALS_SEARCH_IDX ON CB_USER_CREDENTIALS(PROVIDER_ID,CRED_ID);
|
||||
|
||||
CREATE TABLE CB_USER_STATE(
|
||||
USER_ID VARCHAR(64) NOT NULL,
|
||||
USER_ID VARCHAR(128) NOT NULL,
|
||||
|
||||
USER_CONFIGURATION TEXT NULL,
|
||||
|
||||
@@ -121,7 +121,7 @@ CREATE TABLE CB_USER_STATE(
|
||||
|
||||
CREATE TABLE CB_SESSION(
|
||||
SESSION_ID VARCHAR(64) NOT NULL,
|
||||
USER_ID VARCHAR(64) NULL,
|
||||
USER_ID VARCHAR(128) NULL,
|
||||
|
||||
CREATE_TIME TIMESTAMP NOT NULL,
|
||||
LAST_ACCESS_REMOTE_ADDRESS NULL,
|
||||
|
||||
@@ -172,6 +172,8 @@ public class CBDatabase {
|
||||
// Create new admin user
|
||||
if (!CommonUtils.isEmpty(adminName) && !CommonUtils.isEmpty(adminPassword)) {
|
||||
createAdminUser(adminName, adminPassword);
|
||||
} else {
|
||||
grantAdminPermissionsToUser(adminName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -344,16 +346,21 @@ public class CBDatabase {
|
||||
serverController.setUserCredentials(adminUser.getUserId(), authProvider, credentials);
|
||||
}
|
||||
|
||||
// Grant all roles
|
||||
WebRole[] allRoles = serverController.readAllRoles();
|
||||
serverController.setUserRoles(
|
||||
adminUser.getUserId(),
|
||||
Arrays.stream(allRoles).map(WebRole::getRoleId).toArray(String[]::new),
|
||||
adminUser.getUserId());
|
||||
grantAdminPermissionsToUser(adminUser.getUserId());
|
||||
|
||||
return adminUser;
|
||||
}
|
||||
|
||||
private void grantAdminPermissionsToUser(String userId) throws DBCException {
|
||||
// Grant all roles
|
||||
DBWSecurityController securityController = application.getSecurityController();
|
||||
WebRole[] allRoles = securityController.readAllRoles();
|
||||
securityController.setUserRoles(
|
||||
userId,
|
||||
Arrays.stream(allRoles).map(WebRole::getRoleId).toArray(String[]::new),
|
||||
userId);
|
||||
}
|
||||
|
||||
void shutdown() {
|
||||
log.debug("Shutdown database");
|
||||
if (cbDataSource != null) {
|
||||
|
||||
+10
-2
@@ -298,10 +298,18 @@ public class WebServiceAdmin implements DBWServiceAdmin {
|
||||
appConfig.setAnonymousAccessEnabled(config.isAnonymousAccessEnabled());
|
||||
appConfig.setAuthenticationEnabled(config.isAuthenticationEnabled());
|
||||
appConfig.setSupportsCustomConnections(config.isCustomConnectionsEnabled());
|
||||
String adminName = config.getAdminName();
|
||||
String adminPassword = config.getAdminPassword();
|
||||
if (CommonUtils.isEmpty(adminName)) {
|
||||
// Grant admin permissions to the current user
|
||||
WebUser curUser = webSession.getUser();
|
||||
adminName = curUser == null ? null : curUser.getUserId();
|
||||
adminPassword = null;
|
||||
}
|
||||
CBApplication.getInstance().finishConfiguration(
|
||||
config.getServerName(),
|
||||
config.getAdminName(),
|
||||
config.getAdminPassword(),
|
||||
adminName,
|
||||
adminPassword,
|
||||
config.getSessionExpireTime(),
|
||||
appConfig);
|
||||
// Refresh active session
|
||||
|
||||
Reference in New Issue
Block a user