示例#1
0
        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)));
        }
示例#2
0
        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)));
        }