From f6cada728f39b0cf56ef69b947591ab5501e5de2 Mon Sep 17 00:00:00 2001 From: Arie Peterson <arie@greenhost.nl> Date: Wed, 11 Oct 2023 10:29:23 +0200 Subject: [PATCH] Fix kratos pagination when listing identities --- backend/areas/users/user_service.py | 9 ++++++--- backend/helpers/kratos_user.py | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/backend/areas/users/user_service.py b/backend/areas/users/user_service.py index d899e3ea..b5e7681e 100644 --- a/backend/areas/users/user_service.py +++ b/backend/areas/users/user_service.py @@ -22,10 +22,13 @@ kratos_identity_api = identity_api.IdentityApi(kratos_client) class UserService: @staticmethod def get_users(): - page = 1 + page = 0 userList = [] - while page > 0: - res = KratosApi.get("/admin/identities?per_page=1000&page={}".format(page)).json() + while page >= 0: + if page == 0: + res = KratosApi.get("/admin/identities?per_page=1000").json() + else: + 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)) diff --git a/backend/helpers/kratos_user.py b/backend/helpers/kratos_user.py index d5f50d11..13a10e3a 100644 --- a/backend/helpers/kratos_user.py +++ b/backend/helpers/kratos_user.py @@ -133,9 +133,12 @@ class KratosUser(): kratos_id = None # Get out user ID by iterating over all available IDs - page = 1 - while page > 0: - data = api.list_identities(per_page=1000, page=page) + page = 0 + while page >= 0: + if page == 0: + data = api.list_identities(per_page=1000) + else: + data = api.list_identities(per_page=1000, page=page) for kratos_obj in data: # Unique identifier we use if kratos_obj.traits['email'] == email: @@ -158,9 +161,12 @@ class KratosUser(): kratos_id = None return_list = [] # Get out user ID by iterating over all available ID - page = 1 - while page > 0: - data = api.list_identities(per_page=1000, page=page) + page = 0 + while page >= 0: + if page == 0: + data = api.list_identities(per_page=1000) + else: + 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)) -- GitLab