diff --git a/README.md b/README.md index 6a8c9cc..54b3ceb 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ The documentation for python-keycloak is available on [readthedocs](http://pytho * [Shon T. Urbas](shon.urbas@gmail.com>) * [Markus Spanier]() * [Remco Kranenburg]() -* [Remco Kranenburg]() +* [Armin]() ## Usage diff --git a/docs/source/index.rst b/docs/source/index.rst index 87a72cc..a56dab9 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -68,6 +68,10 @@ Contributors * `Agriness Team `_ * `Martin Devlin `_ * `Shon T. Urbas `_ +* `Shon T. Urbas `_ +* `Shon T. Urbas `_ +* `Shon T. Urbas `_ +* `Shon T. Urbas `_ Usage ===== diff --git a/keycloak/keycloak_admin.py b/keycloak/keycloak_admin.py index 97e35a8..9049df4 100644 --- a/keycloak/keycloak_admin.py +++ b/keycloak/keycloak_admin.py @@ -17,12 +17,13 @@ # Unless otherwise stated in the comments, "id", in e.g. user_id, refers to the # internal Keycloak server ID, usually a uuid string + from keycloak.urls_patterns import URL_ADMIN_CLIENT_ROLE from .urls_patterns import \ URL_ADMIN_USERS_COUNT, URL_ADMIN_USER, URL_ADMIN_USER_CONSENTS, \ URL_ADMIN_SEND_UPDATE_ACCOUNT, URL_ADMIN_RESET_PASSWORD, URL_ADMIN_SEND_VERIFY_EMAIL, URL_ADMIN_GET_SESSIONS, \ URL_ADMIN_SERVER_INFO, URL_ADMIN_CLIENTS, URL_ADMIN_CLIENT, URL_ADMIN_CLIENT_ROLES, URL_ADMIN_REALM_ROLES, \ - URL_ADMIN_GROUP, URL_ADMIN_GROUPS, URL_ADMIN_GROUP_CHILD, URL_ADMIN_USER_GROUP,\ + URL_ADMIN_GROUP, URL_ADMIN_GROUPS, URL_ADMIN_GROUP_CHILD, URL_ADMIN_USER_GROUP, URL_ADMIN_GROUP_MEMBERS, \ URL_ADMIN_USER_GROUPS, URL_ADMIN_GROUP_PERMISSIONS, URL_ADMIN_USER_CLIENT_ROLES, URL_ADMIN_USER_STORAGE from .keycloak_openid import KeycloakOpenID @@ -385,6 +386,19 @@ class KeycloakAdmin: return self.get_subgroups(subgroup, path) return None + def get_group_members(self, group_id): + """ + Get members by group id. Returns group members + + GroupRepresentation + http://www.keycloak.org/docs-api/3.2/rest-api/#_userrepresentation + + :return: Keycloak server response (UserRepresentation) + """ + params_path = {"realm-name": self.realm_name, "id": group_id} + data_raw = self.connection.raw_get(URL_ADMIN_GROUP_MEMBERS.format(**params_path)) + return raise_error_from_response(data_raw, KeycloakGetError) + def get_group_by_path(self, path, search_in_subgroups=False): """ Get group id based on name or path. diff --git a/keycloak/urls_patterns.py b/keycloak/urls_patterns.py index d65d26b..048f008 100644 --- a/keycloak/urls_patterns.py +++ b/keycloak/urls_patterns.py @@ -44,6 +44,7 @@ URL_ADMIN_GROUPS = "admin/realms/{realm-name}/groups" URL_ADMIN_GROUP = "admin/realms/{realm-name}/groups/{id}" URL_ADMIN_GROUP_CHILD = "admin/realms/{realm-name}/groups/{id}/children" URL_ADMIN_GROUP_PERMISSIONS = "admin/realms/{realm-name}/groups/{id}/management/permissions" +URL_ADMIN_GROUP_MEMBERS = "admin/realms/{realm-name}/groups/{id}/members" URL_ADMIN_CLIENTS = "admin/realms/{realm-name}/clients" URL_ADMIN_CLIENT = "admin/realms/{realm-name}/clients/{id}"