Exemplo n.º 1
0
 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
Exemplo n.º 2
0
    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