From 387d85cac8767a719d27a5219cfd9116635c82fd Mon Sep 17 00:00:00 2001 From: jscyo Date: Wed, 27 Apr 2022 14:32:45 +0530 Subject: [PATCH] feat: adds RemovePermissionsFromRoleAPI --- .../supertokens/storage/postgresql/Start.java | 17 +++++++++--- .../postgresql/queries/UserRolesQueries.java | 26 +++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/supertokens/storage/postgresql/Start.java b/src/main/java/io/supertokens/storage/postgresql/Start.java index fe8ae300..93eb82a0 100644 --- a/src/main/java/io/supertokens/storage/postgresql/Start.java +++ b/src/main/java/io/supertokens/storage/postgresql/Start.java @@ -1581,15 +1581,24 @@ public void addPermissionToRoleOrDoNothingIfExists_Transaction(TransactionConnec @Override public boolean deletePermissionForRole_Transaction(TransactionConnection con, String role, String permission) throws StorageQueryException { - // TODO - return false; + Connection sqlCon = (Connection) con.getConnection(); + try { + return UserRolesQueries.deletePermissionForRole_Transaction(this, sqlCon, role, permission); + } catch (SQLException e) { + throw new StorageQueryException(e); + } } @Override public int deleteAllPermissionsForRole_Transaction(TransactionConnection con, String role) throws StorageQueryException { - // TODO - return 0; + + Connection sqlCon = (Connection) con.getConnection(); + try { + return UserRolesQueries.deleteAllPermissionsForRole_Transaction(this, sqlCon, role); + } catch (SQLException e) { + throw new StorageQueryException(e); + } } @Override diff --git a/src/main/java/io/supertokens/storage/postgresql/queries/UserRolesQueries.java b/src/main/java/io/supertokens/storage/postgresql/queries/UserRolesQueries.java index 63aefab1..03d52400 100644 --- a/src/main/java/io/supertokens/storage/postgresql/queries/UserRolesQueries.java +++ b/src/main/java/io/supertokens/storage/postgresql/queries/UserRolesQueries.java @@ -184,4 +184,30 @@ public static String[] getUsersForRole(Start start, String role) throws SQLExcep return userIds.toArray(String[]::new); }); } + + public static boolean deletePermissionForRole_Transaction(Start start, Connection con, String role, + String permission) throws SQLException, StorageQueryException { + String QUERY = "DELETE FROM " + getConfig(start).getUserRolesPermissionsTable() + + " WHERE role = ? AND permission = ? "; + + // store the number of rows updated + int rowUpdatedCount = update(con, QUERY, pst -> { + pst.setString(1, role); + pst.setString(2, permission); + }); + + return rowUpdatedCount > 0; + } + + public static int deleteAllPermissionsForRole_Transaction(Start start, Connection con, String role) + throws SQLException, StorageQueryException { + + String QUERY = "DELETE FROM " + getConfig(start).getUserRolesPermissionsTable() + " WHERE role = ? "; + // return the number of rows updated + return update(con, QUERY, pst -> { + pst.setString(1, role); + }); + + } + }