From c63f8e2f31ec4c5e90de3e85d6d1653da4947d2a Mon Sep 17 00:00:00 2001 From: jscyo Date: Tue, 26 Apr 2022 13:28:08 +0530 Subject: [PATCH] feat: adds getUsersForRoleAPI functions --- .../java/io/supertokens/storage/postgresql/Start.java | 7 +++++-- .../storage/postgresql/queries/UserRolesQueries.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/supertokens/storage/postgresql/Start.java b/src/main/java/io/supertokens/storage/postgresql/Start.java index b1395e19..fe8ae300 100644 --- a/src/main/java/io/supertokens/storage/postgresql/Start.java +++ b/src/main/java/io/supertokens/storage/postgresql/Start.java @@ -1480,8 +1480,11 @@ public String[] getRolesForUser(String userId) throws StorageQueryException { @Override public String[] getUsersForRole(String role) throws StorageQueryException { - // TODO - return new String[0]; + try { + return UserRolesQueries.getUsersForRole(this, 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 7522b864..63aefab1 100644 --- a/src/main/java/io/supertokens/storage/postgresql/queries/UserRolesQueries.java +++ b/src/main/java/io/supertokens/storage/postgresql/queries/UserRolesQueries.java @@ -174,4 +174,14 @@ public static boolean doesRoleExist_transaction(Start start, Connection con, Str return execute(con, QUERY, pst -> pst.setString(1, role), ResultSet::next); } + public static String[] getUsersForRole(Start start, String role) throws SQLException, StorageQueryException { + String QUERY = "SELECT user_id FROM " + getConfig(start).getUserRolesTable() + " WHERE role = ? "; + return execute(start, QUERY, pst -> pst.setString(1, role), result -> { + ArrayList userIds = new ArrayList<>(); + while (result.next()) { + userIds.add(result.getString("user_id")); + } + return userIds.toArray(String[]::new); + }); + } }