コード例 #1
0
        public async Task <IActionResult> ChangeAccount(ChangeAccountModel model)
        {
            if (!ModelState.IsValid || model is null)
            {
                return(View());
            }

            var user = await UserManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{UserManager.GetUserId(User)}'."));
            }

            var changeNameResult = await UserManager.SetUserNameAsync(user, model.Username);

            if (!changeNameResult.Succeeded)
            {
                foreach (var error in changeNameResult.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            var changeEmailResult = await UserManager.SetEmailAsync(user, model.Email);

            if (!changeEmailResult.Succeeded)
            {
                foreach (var error in changeEmailResult.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            // Checks if user also requested a password change
            if (!String.IsNullOrEmpty(model.NewPassword))
            {
                var changePasswordResult = await UserManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

                if (!changePasswordResult.Succeeded)
                {
                    foreach (var error in changePasswordResult.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            // Returns the view if any of the previous changes experienced an error
            if (ModelState.ErrorCount > 0)
            {
                ChangeAccountModel viewModel = new ChangeAccountModel
                {
                    Username = user.UserName,
                    Email    = user.Email
                };
                return(View(viewModel));
            }
            await _signInManager.RefreshSignInAsync(user);

            _logger.LogInformation("User changed their password successfully.");
            return(RedirectToAction("Index", new { statusmessage = "Your password has been changed." }));
        }
コード例 #2
0
        public async Task <IActionResult> ChangeAccount()
        {
            var user = await UserManager.GetUserAsync(User);

            if (user is null)
            {
                return(NotFound($"Unable to load user with ID '{UserManager.GetUserId(User)}'."));
            }
            ChangeAccountModel viewModel = new ChangeAccountModel
            {
                Username = user.UserName,
                Email    = user.Email
            };

            return(View(viewModel));
        }
コード例 #3
0
 public ActionResult Change(ChangeAccountModel model)
 {
     if (ModelState.IsValid)
     {
         UserUpdateStatus status = UserService.UpdateAccount(model.Fullname, model.Email);
         if (status == UserUpdateStatus.Updated)
         {
             ShowMessage((L)"Account updated");
             return(Change());
         }
         else
         {
             ShowMessage((L)"No such user account", HtmlMessageType.Error);
         }
     }
     return(View(model));
 }