public async Task<ActionResult> ChangePassword(ChangePasswordInfo model) {
model.ReconstructSettings();
this.ViewData[ChangePasswordInfo.Key] = model;
LoadPage(model.Settings.Uri);
var settings = model.Settings;
if (!SecurityData.IsAuthenticated) {
ModelState.AddModelError("", "User is not authenticated");
}
if (settings.UseValidateHuman) {
bool IsValidated = model.ValidateHuman.ValidateValue(model.ValidationValue);
if (!IsValidated) {
ModelState.AddModelError("ValidationValue", model.ValidateHuman.AltValidationFailText);
model.ValidationValue = String.Empty;
}
}
if (ModelState.IsValid && SecurityData.IsAuthenticated) {
string successView = settings.PostPartialName;
if (!String.IsNullOrEmpty(settings.PostPartialName)) {
successView = settings.PostPartialSuccess;
}
var result = await securityHelper.UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.NewPassword);
if (result.Succeeded) {
var user = await securityHelper.UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null) {
await securityHelper.SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
return PartialView(successView, model);
}
AddErrors(result);
}
Helper.HandleErrorDict(ModelState);
return PartialView(settings.PostPartialName, model);
}