public async Task<ActionResult> ChangeAccountInfo(ChangeAccountInfoModel model, string returnUrl)
 {
     if (ModelState.IsValid)
     {
         ApplicationUser user = new ApplicationUser { FirstName = model.FirstName, LastName = model.LastName };
         if (!string.IsNullOrEmpty(model.Email))
             user.Email = model.Email;
         await MembershipContext.ChangeAccountInfo(User.Identity.GetUserId(), user);
     }
     if (string.IsNullOrEmpty(returnUrl))
         return RedirectToAction("Index", "Home");
     else
         return Redirect(returnUrl);
 }
        public async Task<ActionResult> ChangePassword(ChangeAccountInfoModel model, string returnUrl)
        {
            bool hasPassword = HasPassword();
            ViewBag.HasLocalPassword = hasPassword;
            ViewBag.ReturnUrl = string.IsNullOrEmpty(returnUrl) ? Url.Action("ChangeAccountInfo") : returnUrl;
            if (hasPassword)
            {
                if (ModelState.IsValid)
                {
                    IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, model.Password);
                    if (result.Succeeded)
                    {
                        return RedirectToAction("ChangeAccountInfo", new { returnUrl = ViewBag.ReturnUrl, Message = ManageMessageId.ChangePasswordSuccess });
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
            }
            else
            {
                // User does not have a password so remove any validation errors caused by a missing OldPassword field
                ModelState state = ModelState["OldPassword"];
                if (state != null)
                {
                    state.Errors.Clear();
                }

                if (ModelState.IsValid)
                {
                    IdentityResult result = await UserManager.AddPasswordAsync(User.Identity.GetUserId(), model.Password);
                    if (result.Succeeded)
                    {
                        return RedirectToAction("ChangeAccountInfo", new { returnUrl = ViewBag.ReturnUrl, Message = ManageMessageId.SetPasswordSuccess });
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
 public async Task<ActionResult> ChangeAccountInfo(string returnUrl, ManageMessageId? message)
 {
     ViewBag.StatusMessage =
         message == ManageMessageId.ChangePasswordSuccess ? ResourceUtils.GetString("9bc75a1c6d94e70e8b96d8d59115c0c0", "Your password has been changed.")
         : message == ManageMessageId.SetPasswordSuccess ? ResourceUtils.GetString("9ad4e391b8ba2faf5177dcfa6dcee143", "Your password has been set.")
         : message == ManageMessageId.RemoveLoginSuccess ? ResourceUtils.GetString("9d813b903dbe8155105d3b5c4e6a04ed", "The external login was removed.")
         : message == ManageMessageId.Error ? ResourceUtils.GetString("c69732cc923305ac0684ac8fc05a4bcb", "An error has occurred.")
         : "";
     ViewBag.HasLocalPassword = HasPassword();
     ViewBag.ReturnUrl = string.IsNullOrEmpty(returnUrl) ? Url.Action("ChangeAccountInfo") : returnUrl;
     ChangeAccountInfoModel model = new ChangeAccountInfoModel();
     UserServiceProxy usvc = new UserServiceProxy();
     var cntx = Startup.ClientContext.CreateCopy();
     cntx.DirectDataAccess = true;
     var u = await usvc.LoadEntityByKeyAsync(cntx, User.Identity.GetUserId());
     model.FirstName = u.FirstName;
     model.LastName = u.LastName;
     var ci = User.Identity as System.Security.Claims.ClaimsIdentity;
     model.Email = (from d in ci.Claims where d.Type == Microsoft.IdentityModel.Claims.ClaimTypes.Email select d.Value).SingleOrDefault();
     return View(model);
 }