providers/sync: update attributes on update (#10012)

* unrelated

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* providers/sync: update attributes in connection updates after updating remote object

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Jens L
2024-06-06 20:49:33 +09:00
committed by GitHub
parent 78d07cc355
commit 25e6a69331
5 changed files with 18 additions and 7 deletions

View File

@ -92,12 +92,14 @@ class GoogleWorkspaceGroupClient(
google_group = self.to_schema(group, connection)
self.check_email_valid(google_group["email"])
try:
return self._request(
response = self._request(
self.directory_service.groups().update(
groupKey=connection.google_id,
body=google_group,
)
)
connection.attributes = response
connection.save()
except NotFoundSyncException:
# Resource missing is handled by self.write, which will re-create the group
raise

View File

@ -88,9 +88,11 @@ class GoogleWorkspaceUserClient(GoogleWorkspaceSyncClient[User, GoogleWorkspaceP
self.check_email_valid(
google_user["primaryEmail"], *[x["address"] for x in google_user.get("emails", [])]
)
self._request(
response = self._request(
self.directory_service.users().update(userKey=connection.google_id, body=google_user)
)
connection.attributes = response
connection.save()
def discover(self):
"""Iterate through all users and connect them with authentik users if possible"""

View File

@ -104,9 +104,11 @@ class MicrosoftEntraGroupClient(
microsoft_group = self.to_schema(group, connection)
microsoft_group.id = connection.microsoft_id
try:
return self._request(
response = self._request(
self.client.groups.by_group_id(connection.microsoft_id).patch(microsoft_group)
)
connection.attributes = self.entity_as_dict(response)
connection.save()
except NotFoundSyncException:
# Resource missing is handled by self.write, which will re-create the group
raise

View File

@ -110,7 +110,11 @@ class MicrosoftEntraUserClient(MicrosoftEntraSyncClient[User, MicrosoftEntraProv
"""Update existing user"""
microsoft_user = self.to_schema(user, connection)
self.check_email_valid(microsoft_user.user_principal_name)
self._request(self.client.users.by_user_id(connection.microsoft_id).patch(microsoft_user))
response = self._request(
self.client.users.by_user_id(connection.microsoft_id).patch(microsoft_user)
)
connection.attributes = self.entity_as_dict(response)
connection.save()
def discover(self):
"""Iterate through all users and connect them with authentik users if possible"""