Как я могу установить пользовательский атрибут в completeNewPassword?

#angular #aws-amplify

Вопрос:

У меня есть следующий код

 Auth.completeNewPassword(
        user,
        this.profileForm.get('newPassword')?.value,
        {
          "phone_number": String(this.profileForm.get('phone')?.value),
          "given_name": this.profileForm.get('fName')?.value,
          "family_name": this.profileForm.get('lName')?.value,
          "locale": this.profileForm.get('language')?.value,
          "custom:role": "user" // Error when this line is added
        }
      )
      .then(data => console.log("Changed Password! -->", data))
      .catch(err => console.log("Password change failed: ", err));
 

Он выходит из строя на custom:role линии, и я получаю следующую ошибку:

 `Input attributes include non-writable attributes for the client XXXX`
 

Кроме того, в Cognito атрибут роли не отображается как обязательный атрибут. Как я могу это установить?

Ответ №1:

Хорошо, мой предыдущий ответ был неверным, поэтому я удалил его для потомков.

Очевидно, нам нужно установить разрешения на чтение и запись пользовательского атрибута, прежде чем мы сможем установить его с помощью Amplify.

Круто — где у нас есть эта настройка? НЕ на вкладке Атрибуты консоли Cognito. Он спрятан на вкладке КЛИЕНТЫ ПРИЛОЖЕНИЙ полностью внизу под переключателем под названием Set attribute read and write permissions . Установите флажки в вашем пользовательском атрибуте, и он у вас есть.

Ужасный поток, но, по крайней мере, теперь у меня есть ответ.

Источник: https://forums.aws.amazon.com/message.jspa?messageID=882666