def clean_admin_password(self): password = self.cleaned_data.get("admin_password") if password: self.cleaned_data[ "admin_password_hash"] = build_password_hash_dict(password) else: self.cleaned_data[ "admin_password_hash"] = self.instance.admin_password_hash
def update_or_create_realm_user(self, username, password): user_info = self.get_user_info(username) # default realm user attributes for update or create realm_user_defaults = {"claims": user_info} # password if password: realm_user_defaults["password_hash"] = build_password_hash_dict( password) else: realm_user_defaults["password_hash"] = {} for user_claim, user_claim_source in self.instance.iter_user_claim_mappings( ): value = user_info.get(user_claim_source) if value and isinstance(value, list): value = value[0] if isinstance(value, bytes): value = value.decode("utf-8") if not value: value = "" realm_user_defaults[user_claim] = value # the username for the claim mappings if "username" not in realm_user_defaults or not realm_user_defaults[ "username"]: raise RealmUserError("No username found in ID token", realm_user_defaults) username = realm_user_defaults.pop("username", None) from realms.models import RealmUser realm_user, _ = RealmUser.objects.update_or_create( realm=self.instance, username=username, defaults=realm_user_defaults) return realm_user