Как вернуть статус пользователя в пуле пользователей AWS, используя Amplify с Javascript? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть несколько пользователей в моем пуле: enter image description here

Как я могу вернуть статус этого конкретного пользователя с помощью Amplify?У меня есть this.state.email для пользователя.

Вот как выглядит моя функция handleSubmit:

  handleSubmit = async event => {
    event.preventDefault();

    this.setState({ isLoading: true });

    try {
      const newUser = await Auth.signUp({
        username: this.state.email,
        password: this.state.password,
      });

      this.setState({ newUser });
    } catch (e) {
      if (e.name === 'UserNotConfirmedException') {
        alert(
          'Looks like your account isn\'t confirmed! ' +
          'Please check your email to find the confirmation code.',
        );

        // await Auth.resendSignUp(this.state.email);

        this.setState({
          newUser: {
            username: this.state.email,
            password: this.state.password,
          },
        });
      } else if (e.name === 'UsernameExistsException') {
        // how to check if unconfirmed?
        if ('not sure what to put here') {
          alert(
            'Looks like your account isn\'t confirmed! ' +
            'Please check your email to find the confirmation code.',
          );
          // bring up confirmation page
        } else {
          alert(
            'Looks like you already have an account! ' +
            'Please log in with your current password.',
          );
          this.props.history.push('/login');
        }
      } else {
        alert(e.message);
      }
    }

    this.setState({ isLoading: false });
  }

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Я не совсем то, что вы действительно хотите, но если вы хотите найти способ получить информацию о статусе пользователя для управления определенным рабочим процессом, вам нужно проверить challengeName и challengeParam.Например, когда вы регистрируете нового пользователя auth.signIn, возвращаете cognito User: если этот пользователь не подтвержден, у него будут атрибуты challengeName и challengeParm, чем вы можете проверить в своем коде, например: я создаю пользователя изконсоль с временным паролем, чтобы он был в состоянии нового пароля требуется, из кода, который я сделал это, чтобы иметь возможность завершить рабочий процесс нового пароля

  return fromPromise(Auth.signIn(username, password)).pipe(
   tap(user => {
     console.log('signIn Methode', user)
      if (user.challengeName === 'NEW_PASSWORD_REQUIRED') {
             this.navigate(['/completePassword']);
      }
  }), catchError(..){ }

Здесь ниже, вы можете увидеть ответ, который я отображаюиз console.log пользователь с «НОВЫМ ПАРОЛЕМ ТРЕБУЕТСЯ СТАТУС»

Если пользователь подтвердит, вы не увидите challengeName / challangeParm.

надеюсь, это поможет вам.

0 голосов
/ 18 мая 2018

Я не совсем понял ваш вопрос, но думаю, что мое объяснение все равно поможет.

Вы получите «UsernameExistsException», когда вы попытаетесь снова зарегистрировать пользователя.

Но, UserNotConfirmedException возвращается, когда вы пытаетесь войти в систему с этим пользователем.Следовательно, это необходимо обработать при входе в систему.

Вам нужно что-то вроде этого.

    handleSubmit = async event => {
    event.preventDefault();

    this.setState({ isLoading: true });

    try {
        const newUser = await Auth.signUp({
            username: this.state.email,
            password: this.state.password, 'attributes': {
                name: this.state.name,
                email: this.state.email
            }
        });
        this.setState({
            newUser
        });
        } catch (e) {
            if(e.name === 'UsernameExistsException') {
                alert("You are already registered. Resending the verification code to " + this.state.email);
                await Auth.resendSignUp(this.state.email);
                this.state.resent = true;
            } else {
                alert(e.message);
            }
        }

    this.setState({ isLoading: false });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...