Browse Source
			
			
			Merge pull request #24 from MrFoxes/master
			
				Assing realm roles
			
			
				pull/25/head
			
			
		 
		
			
				
					
						 Marcos Pereira
					
					6 years ago
						Marcos Pereira
					
					6 years ago
					
						
							committed by
							
								 GitHub
								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', | 
			
		
	
	
		
			
				
					|  |  | 
 |