示例#1
0
        public IActionResult ActivateAccountAndResetPassword(string?accountCode = null, string?passwordCode = null)
        {
            if (accountCode == null || passwordCode == null)
            {
                return(BadRequest("A codes must be supplied for account activation and password reset."));
            }

            var activateAccountAndResetPasswordViewModel = new ActivateAccountAndResetPasswordViewModel
            {
                AccountActivationCode = accountCode,
                PasswordResetCode     = passwordCode
            };

            return(View(activateAccountAndResetPasswordViewModel));
        }
示例#2
0
        public async Task <IActionResult> ActivateAccountAndResetPassword(ActivateAccountAndResetPasswordViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var user = await _userManager.FindByEmailAsync(vm.Email);

            if (user == null)
            {
                // Don't reveal that the user does not exist
                return(RedirectToAction("Index", "Home", new { userActivated = true }));
            }

            var confirmEmail = await _userManager.ConfirmEmailAsync(user, Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(vm.AccountActivationCode)));

            if (!confirmEmail.Succeeded)
            {
                foreach (var error in confirmEmail.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
                return(View());
            }

            var result = await _userManager.ResetPasswordAsync(user, Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(vm.PasswordResetCode)), vm.Password);

            if (result.Succeeded)
            {
                var signInResult = await _signInManager.PasswordSignInAsync(vm.Email, vm.Password, false, false);

                if (signInResult.Succeeded)
                {
                    return(RedirectToAction("Index", "Home", new { Area = "Admin" }));
                }

                return(RedirectToAction("Index", "Home", new { userActivated = true }));
            }

            foreach (var error in result.Errors)
            {
                ModelState.AddModelError(string.Empty, error.Description);
            }
            return(View());
        }