diff --git a/src/djangooidc/backends.py b/src/djangooidc/backends.py index d4df7aa50..d77a3fe15 100644 --- a/src/djangooidc/backends.py +++ b/src/djangooidc/backends.py @@ -50,13 +50,8 @@ class OpenIdConnectBackend(ModelBackend): user, created = UserModel.objects.get_or_create(**args) if not created: - # User already exists, update other fields without overwriting first_name and last_name - # overwrite first_name and last_name if not empty string - for key, value in args["defaults"].items(): - # Check if the key is not first_name or last_name or value is not empty string - if key not in ['first_name', 'last_name'] or value != "": - setattr(user, key, value) - user.save() + # If user exists, update existing user + self.update_existing_user(user, args["defaults"]) else: # If user is created, configure the user user = self.configure_user(user, **kwargs) @@ -69,6 +64,15 @@ class OpenIdConnectBackend(ModelBackend): user.on_each_login() return user + def update_existing_user(self, user, kwargs): + # Update other fields without overwriting first_name and last_name. + # Overwrite first_name and last_name if not empty string + for key, value in kwargs.items(): + # Check if the key is not first_name or last_name or value is not empty string + if key not in ['first_name', 'last_name'] or value: + setattr(user, key, value) + user.save() + def clean_username(self, username): """ Performs any cleaning on the "username" prior to using it to get or