private IActionResult UpadateError(UserAdminPasswordViewModel userAdminPasswordViewModel, string message)
        {
            userAdminPasswordViewModel.Notification = message;
            userAdminPasswordViewModel.UpdateResult = false;

            return(View("Index", userAdminPasswordViewModel));
        }
        public async Task <IActionResult> Index()
        {
            var user = await _userManager.GetUserAsync(User).ConfigureAwait(false);

            UserAdminPasswordViewModel userAdminPasswordViewModel = new UserAdminPasswordViewModel
            {
                OldPassword  = string.Empty,
                NewPassword1 = string.Empty,
                NewPassword2 = string.Empty,
            };

            return(View("Index", userAdminPasswordViewModel));
        }
        public async Task <IActionResult> Edit(UserAdminPasswordViewModel userAdminPasswordViewModel)
        {
            string oldPassword  = userAdminPasswordViewModel.OldPassword;
            string newPassword1 = userAdminPasswordViewModel.NewPassword1;
            string newPassword2 = userAdminPasswordViewModel.NewPassword2;

            if (!ModelState.IsValid)
            {
                return(UpadateError(userAdminPasswordViewModel, EditNgMessage));
            }

            if (!newPassword1.Equals(newPassword2))
            {
                return(UpadateError(userAdminPasswordViewModel, PasswordMismatch));
            }

            var user = await _userManager.GetUserAsync(User).ConfigureAwait(false);

            if (user == null)
            {
                return(UpadateError(userAdminPasswordViewModel, EditNgMessage));
            }

            // 念のため変更前のパスワードをチェックする
            bool retCheckPass = await _userManager.CheckPasswordAsync(user, oldPassword).ConfigureAwait(false);

            if (!retCheckPass)
            {
                return(UpadateError(userAdminPasswordViewModel, PasswordMisstake));
            }

            var retValidPass = await _userManager.PasswordValidators[0].ValidateAsync(_userManager, user, newPassword1).ConfigureAwait(false);

            if (!retValidPass.Succeeded)
            {
                return(UpadateError(userAdminPasswordViewModel, PasswordIllegal));
            }

            var result = await _userManager.ChangePasswordAsync(user, oldPassword, newPassword1).ConfigureAwait(false);

            userAdminPasswordViewModel.Notification = EditOkMessage;
            userAdminPasswordViewModel.UpdateResult = true;

            return(View("Index", userAdminPasswordViewModel));
        }