public async Task <IActionResult> Confirm(SignupConfirmationViewModel confirmation) { if (!ModelState.IsValid) { return(View(confirmation)); } var user = await _userManager.FindByEmailAsync(confirmation.Email); if (user == null) { ModelState.AddModelError(string.Empty, $"A user having email '{confirmation.Email}' does not exist."); return(View(confirmation)); } var confirmationResult = await((CognitoUserManager <CognitoUser>)_userManager) .ConfirmSignUpAsync(user, confirmation.Code, true); if (!confirmationResult.Succeeded) { foreach (var error in confirmationResult.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(View(confirmation)); } return(RedirectToAction(nameof(Complete))); }
public async Task <IActionResult> Confirm(SignupConfirmationViewModel confirmation) { if (!ModelState.IsValid) { return(View(confirmation)); } var user = await _userManager.FindByEmailAsync(confirmation.Email); if (user == null) { ModelState.AddModelError(string.Empty, $"A user having email '{confirmation.Email}' does not exist."); return(View(confirmation)); } // TODO: Log issue on Github // The following commented out code throws an exception in the AWS SDK. It seems related to // the user not having session tokens (not authenticated). But we can't authenticate a user until we // have confirmed the user. // var confirmationResult = await _userManager.ConfirmEmailAsync(user, confirmation.Code); // The following code can be used as a workaround to the aforementioned issue var confirmationResult = await((CognitoUserManager <CognitoUser>)_userManager) .ConfirmSignUpAsync(user, confirmation.Code, true); if (!confirmationResult.Succeeded) { foreach (var error in confirmationResult.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(View(confirmation)); } return(RedirectToAction(nameof(Complete))); }