public async Task <IActionResult> ChangeEmail(EmailFieldModel model)
        {
            string confirmText = null;
            var    user        = await _userManager.FindByNameAsync(model.UserName);

            if (new EmailAddressAttribute().IsValid(model.Email))
            {
                if (model.Email != user.Email)
                {
                    if (!((await _userManager.FindByEmailAsync(model.Email)) is AppUser))
                    {
                        if (user is AppUser)
                        {
                            user.Email          = model.Email;
                            user.EmailConfirmed = true;
                            var result = await _userManager.UpdateAsync(user);

                            if (result.Succeeded == true)
                            {
                                confirmText = "The email was successfully changed";
                            }
                            else
                            {
                                foreach (var error in result.Errors)
                                {
                                    ModelState.AddModelError("", error.Description);
                                }
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("", "The user doesn't found. Please, reload page or refer to administrator.");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("Email", "The email is already busy");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Old and new email match up");
                }
            }
            else
            {
                ModelState.AddModelError("", "Input correct email adress");
            }
            var returnModel = await getUserProps(model.UserName);

            return(PartialView("Settings/EmailField", new EmailFieldModel()
            {
                Email = user.Email, ContentOpened = true, ConfirmText = confirmText, UserName = model.UserName
            }));
        }
        public async Task <IActionResult> ChangeEmail(EmailFieldModel model)
        {
            string confirmText = null;
            var    user        = await _userManager.FindByNameAsync(User.Identity.Name);

            if (new EmailAddressAttribute().IsValid(model.Email))
            {
                if (model.Email != user.Email)
                {
                    if (!((await _userManager.FindByEmailAsync(model.Email)) is AppUser))
                    {
                        if (user is AppUser)
                        {
                            var token = await _userManager.GenerateChangeEmailTokenAsync(user, model.Email);

                            var resetUrl = Url.Action(
                                "ConfirmChangeEmail",
                                "Account",
                                new { userId = user.Id, newEmail = model.Email, token = token },
                                protocol: Request.Scheme);
                            await SendEmail(model.Email, "Email change request", $"Please confirm your new email by <a href='{HtmlEncoder.Default.Encode(resetUrl)}'>clicking here</a>." +
                                            $"If you didn't do it, please ignore the message.");

                            confirmText = $"We send you you a message by {user.Email} with request to change to new email. Please check your email.";
                        }
                        else
                        {
                            ModelState.AddModelError("", "The user doesn't found. Please, reload page or refer to administrator.");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("Email", "The email is already busy");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Old and new email match up");
                }
            }
            else
            {
                ModelState.AddModelError("", "Input correct email adress");
            }
            var returnModel = await getUserProps(User.Identity.Name);

            return(PartialView("Settings/EmailField", new EmailFieldModel()
            {
                Email = user.Email, ContentOpened = true, ConfirmText = confirmText
            }));
        }
Пример #3
0
 public void BeforeEach()
 {
     _classUnderTest = new EmailFieldModel();
 }