python-keycloak icon indicating copy to clipboard operation
python-keycloak copied to clipboard

Add support for get_user_groups_count

Open keith-rhodes-0723 opened this issue 4 years ago • 1 comments

No support for this API. My implementation follows:

from urls_patterns.py:

URL_ADMIN_USER_GROUP_COUNT = "admin/realms/{realm-name}/users/{id}/groups/count"

from keycloak_admin.py:

from .urls_patterns import URL_ADMIN_SERVER_INFO, URL_ADMIN_CLIENT_AUTHZ_RESOURCES, URL_ADMIN_CLIENT_ROLES,
URL_ADMIN_GET_SESSIONS, URL_ADMIN_RESET_PASSWORD, URL_ADMIN_SEND_UPDATE_ACCOUNT,
URL_ADMIN_USER_CLIENT_ROLES_COMPOSITE, URL_ADMIN_USER_GROUP, URL_ADMIN_REALM_ROLES, URL_ADMIN_GROUP_CHILD,
URL_ADMIN_USER_CONSENTS, URL_ADMIN_SEND_VERIFY_EMAIL, URL_ADMIN_CLIENT, URL_ADMIN_USER, URL_ADMIN_CLIENT_ROLE,
URL_ADMIN_USER_GROUPS, URL_ADMIN_CLIENTS, URL_ADMIN_FLOWS_EXECUTIONS, URL_ADMIN_GROUPS, URL_ADMIN_USER_CLIENT_ROLES,
URL_ADMIN_REALMS, URL_ADMIN_USERS_COUNT, URL_ADMIN_FLOWS, URL_ADMIN_GROUP, URL_ADMIN_CLIENT_AUTHZ_SETTINGS,
URL_ADMIN_GROUP_MEMBERS, URL_ADMIN_USER_STORAGE, URL_ADMIN_GROUP_PERMISSIONS, URL_ADMIN_IDPS,
URL_ADMIN_USER_CLIENT_ROLES_AVAILABLE, URL_ADMIN_USERS, URL_ADMIN_CLIENT_SCOPES,
URL_ADMIN_CLIENT_SCOPES_ADD_MAPPER, URL_ADMIN_CLIENT_SCOPE, URL_ADMIN_CLIENT_SECRETS,
URL_ADMIN_USER_REALM_ROLES, URL_ADMIN_USER_GROUP_COUNT

def get_user_group_count(self, user_id):
    """
    Returns a number of groups of which the user is a member

    :param user_id: User id

    :return: count of groups user is member of
    """
    params_path = {"realm-name": self.realm_name, "id": user_id}
    data_raw = self.raw_get(URL_ADMIN_USER_GROUP_COUNT.format(**params_path))
    return raise_error_from_response(data_raw, KeycloakGetError)

keith-rhodes-0723 avatar May 02 '20 14:05 keith-rhodes-0723

Nicely done. What's the benefit over length(get_user_groups(user_id) (except for reduction of data volume)?

double-a avatar Apr 09 '21 19:04 double-a