Browse Source
Merge pull request #24 from MrFoxes/master
Assing realm roles
hotfix/merge
Marcos Pereira
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
22 additions and
1 deletions
-
docs/source/index.rst
-
keycloak/keycloak_admin.py
-
keycloak/urls_patterns.py
-
setup.py
|
|
@ -235,6 +235,9 @@ Main methods:: |
|
|
|
# Assign client role to user. Note that BOTH role_name and role_id appear to be required. |
|
|
|
keycloak_admin.assign_client_role(client_id="client_id", user_id="user_id", role_id="role_id", role_name="test") |
|
|
|
|
|
|
|
# Assign realm roles to user. Note that BOTH role_name and role_id appear to be required. |
|
|
|
keycloak_admin.assign_realm_roles(client_id="client_id", user_id="user_id", roles=[{"roles_representation"}]) |
|
|
|
|
|
|
|
# Create new group |
|
|
|
group = keycloak_admin.create_group(name="Example Group") |
|
|
|
|
|
|
|
|
|
@ -823,6 +823,23 @@ class KeycloakAdmin: |
|
|
|
data=json.dumps(payload)) |
|
|
|
return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) |
|
|
|
|
|
|
|
def assign_realm_roles(self, user_id, client_id, roles): |
|
|
|
""" |
|
|
|
Assign realm roles to a user |
|
|
|
|
|
|
|
:param client_id: id of client (not client-id) |
|
|
|
:param user_id: id of user |
|
|
|
:param client_id: id of client containing role, |
|
|
|
:param roles: roles list or role (use RoleRepresentation) |
|
|
|
:return Keycloak server response |
|
|
|
""" |
|
|
|
|
|
|
|
payload = roles if isinstance(roles, list) else [roles] |
|
|
|
params_path = {"realm-name": self.realm_name, "id": user_id} |
|
|
|
data_raw = self.connection.raw_post(URL_ADMIN_USER_REALM_ROLES.format(**params_path), |
|
|
|
data=json.dumps(payload)) |
|
|
|
return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204) |
|
|
|
|
|
|
|
def get_client_roles_of_user(self, user_id, client_id): |
|
|
|
""" |
|
|
|
Get all client roles for a user. |
|
|
|
|
|
@ -41,6 +41,7 @@ URL_ADMIN_SEND_VERIFY_EMAIL = "admin/realms/{realm-name}/users/{id}/send-verify- |
|
|
|
URL_ADMIN_RESET_PASSWORD = "admin/realms/{realm-name}/users/{id}/reset-password" |
|
|
|
URL_ADMIN_GET_SESSIONS = "admin/realms/{realm-name}/users/{id}/sessions" |
|
|
|
URL_ADMIN_USER_CLIENT_ROLES = "admin/realms/{realm-name}/users/{id}/role-mappings/clients/{client-id}" |
|
|
|
URL_ADMIN_USER_REALM_ROLES = "admin/realms/{realm-name}/users/{id}/role-mappings/realm" |
|
|
|
URL_ADMIN_USER_CLIENT_ROLES_AVAILABLE = "admin/realms/{realm-name}/users/{id}/role-mappings/clients/{client-id}/available" |
|
|
|
URL_ADMIN_USER_CLIENT_ROLES_COMPOSITE = "admin/realms/{realm-name}/users/{id}/role-mappings/clients/{client-id}/composite" |
|
|
|
URL_ADMIN_USER_GROUP = "admin/realms/{realm-name}/users/{id}/groups/{group-id}" |
|
|
|
|
|
@ -7,7 +7,7 @@ with open("README.md", "r") as fh: |
|
|
|
|
|
|
|
setup( |
|
|
|
name='python-keycloak', |
|
|
|
version='0.17.4', |
|
|
|
version='0.17.5', |
|
|
|
url='https://github.com/marcospereirampj/python-keycloak', |
|
|
|
license='The MIT License', |
|
|
|
author='Marcos Pereira', |
|
|
|