public async Task <IActionResult> ChangePassword(UserChangePasswordProfileServiceModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            User user = await this.userManager.GetUserAsync(User);

            bool changePasswordResult = await this.userService.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

            if (!changePasswordResult)
            {
                TempData.AddErrorMessage($"Error. Your password could not be changed. Please try again.");
                return(View(model));
            }

            TempData.AddSuccessMessage($"Your password has been changed.");
            return(RedirectToAction(nameof(Profile), new { username = User.Identity.Name }));
        }
        public async Task <IActionResult> ChangePassword(string username)
        {
            User user = await this.userManager.FindByNameAsync(username);

            if (user == null)
            {
                return(NotFound());
            }

            bool userHasPassword = await this.userManager.HasPasswordAsync(user);

            if (!userHasPassword)
            {
                TempData.AddErrorMessage("You do not have a password. You are using an external login provider.");
                return(RedirectToAction(nameof(Profile), new { username = User.Identity.Name }));
            }

            UserChangePasswordProfileServiceModel model = await this.userService.GetChangePasswordProfileByIdAsync(user.Id);

            return(View(model));
        }