Skip to content

Commit f1c4397

Browse files
committed
(django) fix uer sync issue
1 parent 9ddcb13 commit f1c4397

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

  • infrastructure/common-images/cloudharness-django/libraries/cloudharness-django/cloudharness_django/services

infrastructure/common-images/cloudharness-django/libraries/cloudharness-django/cloudharness_django/services/user.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def sync_kc_user(self, kc_user: ch_models.User, is_superuser=False, delete=False
127127

128128
# Update user attributes
129129
user = self._map_kc_user(user, kc_user, is_superuser, delete)
130-
self.sync_kc_user_groups(kc_user)
130+
self.sync_kc_user_groups(kc_user, user=user)
131131
user.save()
132132

133133
# FINAL SAFETY CHECK: Verify Member exists before returning
@@ -140,9 +140,10 @@ def sync_kc_user(self, kc_user: ch_models.User, is_superuser=False, delete=False
140140

141141
return user
142142

143-
def sync_kc_user_groups(self, kc_user: ch_models.User):
143+
def sync_kc_user_groups(self, kc_user: ch_models.User, user: User = None):
144144
# Sync the user usergroups (not organizations) using kc_id for reliable lookups
145-
user = get_user_by_kc_id(kc_user.id)
145+
if user is None:
146+
user = get_user_by_kc_id(kc_user.id)
146147

147148
if user is None:
148149
raise ValueError(f"Django user not found for Keycloak user {kc_user.id}")
@@ -156,7 +157,7 @@ def sync_kc_user_groups(self, kc_user: ch_models.User):
156157
user.save()
157158

158159
# Sync organization memberships separately
159-
self.sync_kc_user_organizations(kc_user)
160+
self.sync_kc_user_organizations(kc_user, user=user)
160161

161162
# Ensure the member relationship exists and is correct
162163
try:
@@ -201,14 +202,16 @@ def sync_kc_organization(self, kc_org: ch_models.Organization) -> Organization:
201202
)
202203
return org
203204

204-
def sync_kc_user_organizations(self, kc_user: ch_models.User):
205+
def sync_kc_user_organizations(self, kc_user: ch_models.User, user: User = None):
205206
"""
206207
Sync the user's organization memberships from Keycloak to Django.
207208
Creates Organization records if they don't exist and manages OrganizationMember relationships.
208209
209210
:param kc_user: Keycloak user object with organizations attribute
211+
:param user: Django User instance (optional, looked up by kc_id if not provided)
210212
"""
211-
user = get_user_by_kc_id(kc_user.id)
213+
if user is None:
214+
user = get_user_by_kc_id(kc_user.id)
212215

213216
if user is None:
214217
raise ValueError(f"Django user not found for Keycloak user {kc_user.id}")

0 commit comments

Comments
 (0)