예제 #1
0
        public async Task <IActionResult> ChangePassword(SettingsViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(nameof(Settings), model));
            }

            using (_unitOfWorkProvider.Create())
            {
                var user = await _userManager.GetUserAsync(_currentUserProvider.GetClaims());

                if (user != null)
                {
                    var result = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, false);

                        _logger.LogInformation(3, "User changed their password successfully.");
                        return(RedirectToSettingsPernament(ManageMessageId.ChangePasswordSuccess));
                    }
                    AddErrors(result);
                    return(View(nameof(Settings), model));
                }

                return(RedirectToSettingsPernament(ManageMessageId.Error));
            }
        }