From f2daf4607e4361f8bd3d4e95b4f8859b12a1a1fa Mon Sep 17 00:00:00 2001 From: Serge Rider Date: Tue, 31 Aug 2021 13:42:07 +0300 Subject: [PATCH] Role management API fixes --- .../cloudbeaver/server/CBSecurityController.java | 15 ++++++++++++--- .../service/admin/WebServiceBindingAdmin.java | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBSecurityController.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBSecurityController.java index 4f22f46d79..56b0875388 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBSecurityController.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBSecurityController.java @@ -449,7 +449,8 @@ class CBSecurityController implements DBWSecurityController { try (Connection dbCon = database.openConnection()) { try (JDBCTransaction txn = new JDBCTransaction(dbCon)) { createAuthSubject(dbCon, role.getRoleId(), SUBJECT_ROLE); - try (PreparedStatement dbStat = dbCon.prepareStatement("INSERT INTO CB_ROLE(ROLE_ID,ROLE_NAME,ROLE_DESCRIPTION,CREATE_TIME) VALUES(?,?,?,?)")) { + try (PreparedStatement dbStat = dbCon.prepareStatement( + "INSERT INTO CB_ROLE(ROLE_ID,ROLE_NAME,ROLE_DESCRIPTION,CREATE_TIME) VALUES(?,?,?,?)")) { dbStat.setString(1, role.getRoleId()); dbStat.setString(2, CommonUtils.notEmpty(role.getName())); dbStat.setString(3, CommonUtils.notEmpty(role.getDescription())); @@ -476,7 +477,9 @@ class CBSecurityController implements DBWSecurityController { dbStat.setString(1, CommonUtils.notEmpty(role.getName())); dbStat.setString(2, CommonUtils.notEmpty(role.getDescription())); dbStat.setString(3, role.getRoleId()); - dbStat.execute(); + if (dbStat.executeUpdate() <= 0) { + throw new DBCException("Role '" + role.getRoleId() + "' doesn't exist"); + } } txn.commit(); } @@ -490,7 +493,13 @@ class CBSecurityController implements DBWSecurityController { try (Connection dbCon = database.openConnection()) { try (JDBCTransaction txn = new JDBCTransaction(dbCon)) { deleteAuthSubject(dbCon, roleId); - JDBCUtils.executeStatement(dbCon, "DELETE FROM CB_ROLE WHERE ROLE_ID=?", roleId); + try (PreparedStatement dbStat = dbCon.prepareStatement( + "DELETE FROM CB_ROLE WHERE ROLE_ID=?")) { + dbStat.setString(1, roleId); + if (dbStat.executeUpdate() <= 0) { + throw new DBCException("Role '" + roleId + "' doesn't exist"); + } + } txn.commit(); } } catch (SQLException e) { diff --git a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java index 900e509350..d2c34541e3 100644 --- a/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java +++ b/server/bundles/io.cloudbeaver.service.admin/src/io/cloudbeaver/service/admin/WebServiceBindingAdmin.java @@ -60,7 +60,7 @@ public class WebServiceBindingAdmin extends WebServiceBindingBase getService(env).createRole( + env -> getService(env).updateRole( getWebSession(env), env.getArgument("roleId"), env.getArgument("roleName"),