From 480bda0752d4bd57aef1dc1574730fc9f169608e Mon Sep 17 00:00:00 2001 From: Mart van Santen <mart@greenhost.nl> Date: Mon, 14 Aug 2023 22:07:05 +0200 Subject: [PATCH] Fix more then 250 users --- backend/areas/users/user_service.py | 16 +++++++++----- backend/helpers/kratos_user.py | 34 +++++++++++++++++++---------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/backend/areas/users/user_service.py b/backend/areas/users/user_service.py index 888c1426..ebb965a1 100644 --- a/backend/areas/users/user_service.py +++ b/backend/areas/users/user_service.py @@ -22,12 +22,18 @@ kratos_identity_api = identity_api.IdentityApi(kratos_client) class UserService: @staticmethod def get_users(): - res = KratosApi.get("/admin/identities").json() + page = 1 userList = [] - for r in res: - # removed the app role assignment function, passing simple user data - # userList.append(UserService.__insertAppRoleToUser(r["id"], r)) - userList.append(r) + while page > 0: + res = KratosApi.get("/admin/identities?per_page=1000&page={}".format(page)).json() + for r in res: + # removed the app role assignment function, passing simple user data + # userList.append(UserService.__insertAppRoleToUser(r["id"], r)) + userList.append(r) + if len(res) == 0: + page = -1 + else: + page = page + 1 return userList diff --git a/backend/helpers/kratos_user.py b/backend/helpers/kratos_user.py index 3615809e..894332f1 100644 --- a/backend/helpers/kratos_user.py +++ b/backend/helpers/kratos_user.py @@ -133,12 +133,18 @@ class KratosUser(): kratos_id = None # Get out user ID by iterating over all available IDs - data = api.list_identities() - for kratos_obj in data: - # Unique identifier we use - if kratos_obj.traits['email'] == email: - kratos_id = str(kratos_obj.id) - return KratosUser(api, kratos_id) + page = 1 + while page > 0: + data = api.list_identities(per_page=1000, page=page) + for kratos_obj in data: + # Unique identifier we use + if kratos_obj.traits['email'] == email: + kratos_id = str(kratos_obj.id) + return KratosUser(api, kratos_id) + if len(data) == 0: + page = -1 + else: + page = page + 1 return None @@ -151,11 +157,17 @@ class KratosUser(): kratos_id = None return_list = [] - # Get out user ID by iterating over all available IDs - data = api.list_identities() - for kratos_obj in data: - kratos_id = str(kratos_obj.id) - return_list.append(KratosUser(api, kratos_id)) + # Get out user ID by iterating over all available ID + page = 1 + while page > 0: + data = api.list_identities(per_page=1000, page=page) + for kratos_obj in data: + kratos_id = str(kratos_obj.id) + return_list.append(KratosUser(api, kratos_id)) + if len(data) == 0: + page = -1 + else: + page = page + 1 return return_list -- GitLab