Пример #1
0
        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));
        }
Пример #2
0
 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));
     }
 }
Пример #3
0
        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));
        }