Question:
I have some users in my user pool:
How can I return the status of that particular user with Amplify? I have this.state.email
for the user.
Here is what my handleSubmit function looks like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
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 }); } |
Any ideas?
Answer:
I’m not sur what do you really want, but if you want to find way to retrieve the information about the status of the user in order to manage a specific workflow, you have to check the challengeName and challengeParam. For instance, when you signIn a new user, the auth.signIn, return a cognito User: if this user is not confirmed the user will have a challengeName and challengeParm attributes than you can verify within your code for example: I create a user from the console with a temporary password so he was in new password required status, from the code I did this to be able to complete the new password workflow
1 2 3 4 5 6 7 8 |
return fromPromise(Auth.signIn(username, password)).pipe( tap(user => { console.log('signIn Methode', user) if (user.challengeName === 'NEW_PASSWORD_REQUIRED') { this.navigate(['/completePassword']); } }), catchError(..){ } |
Here below, you can see the answer that I display from the console.log
user with “NEW PASSWORD REQUIRED STATUS”
If the user is confirmed you will not see the challengeName/challangeParm.
hope this will help you.