Fix get_user_by_card_id by implementing own filter

This commit is contained in:
Luca Lutz 2022-11-03 22:43:43 +01:00
parent 1b30093322
commit 0c6e188367
2 changed files with 15 additions and 7 deletions

View File

@ -17,17 +17,18 @@ class KeycloakHandler:
@staticmethod
def get_user_by_card_id(card_id):
users = KeycloakHandler.admin.get_users(
{ 'attributes': { 'FabCard': card_id }}
)
print(f'Found {len(users)} users with card_id: {card_id}')
users = KeycloakHandler.admin.get_users()
# Filter not working for Attributes because of multidimensional JSON
match len(users):
user = [user for user in users if "attributes" in user and "FabCard" in user["attributes"] and user["attributes"]["FabCard"] == [card_id]]
print(f'Found {len(user)} user(s) with card_id: {card_id}')
match len(user):
case 0:
return None
case 1:
print(f'FabCard matches with user {users[0]["username"]}')
return users[0]
print(f'FabCard matches with user {user[0]["username"]}')
return user[0]
case other:
print(f'Error! too many users with card_id: {card_id}')
return None

7
test.py Normal file
View File

@ -0,0 +1,7 @@
from keycloak import KeycloakAdmin
keycloak_admin = KeycloakAdmin(server_url="https://auth.sfz-aalen.space/auth/",
username='luca.lutz',
password='LiviT2005',
realm_name="master",
verify=True)