Skip to content

Commit 3f247d0

Browse files
committed
make link_user_to_local_idp idempotent
1 parent c1d492d commit 3f247d0

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

src/mas/devops/users.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,16 @@ def get_or_create_user(self, payload):
318318

319319
def link_user_to_local_idp(self, user_id, email_password=False):
320320
'''
321-
TODO: idempotency
321+
Checks if user already has a local identity, no-op if so.
322+
Assumes user exists, raises if not
322323
'''
324+
325+
# For the sake of idempotency, check if the user already has a local identity
326+
user = self.get_user(user_id)
327+
if "identities" in user and "_local" in user["identities"]:
328+
self.logger.info(f"User {user_id} already has a local identity")
329+
return None
330+
323331
self.logger.info(f"Linking user {user_id} to local IDP (email_password: {email_password})")
324332
url = f"{self.mas_api_url}/v3/users/{user_id}/idps/local"
325333
querystring = {
@@ -342,7 +350,7 @@ def link_user_to_local_idp(self, user_id, email_password=False):
342350
if response.status_code != 200:
343351
raise Exception(response.text)
344352

345-
return response.json()
353+
return None
346354

347355
def get_user(self, user_id):
348356
self.logger.info(f"Getting user {user_id}")

0 commit comments

Comments
 (0)