public ActionResult EditAccountDetails(EditAccountDetailsViewModel model, HttpPostedFileBase image) { if (ModelState.IsValid) { //Fetch User entity from database var user = _userRepo.Users.FirstOrDefault(u => u.UserId == model.UserId); //Add new values to entity if (user != null) { user.Name = model.Name; user.Surname = model.Surname; user.Mail = model.Mail; //Update possible new image if (image != null) { model.ImageMimetype = image.ContentType; model.ImageData = new byte[image.ContentLength]; image.InputStream.Read(model.ImageData, 0, image.ContentLength); //For a strange reason I have to put the data in the model first, and then in the user entity user.ImageData = model.ImageData; user.ImageMimeType = model.ImageMimetype; } //Change possible new password if (!string.IsNullOrEmpty(model.Password) && !string.IsNullOrEmpty(model.OldPassword)) { var succes = _members.ChangePassword(User.Identity.Name, model.OldPassword, model.Password); if (!succes) { ModelState.AddModelError("", "Password did not change! Is it strong (6 characters, 1 number and 1 special character) enough? "); return(View(model)); } } //Save Entity _userRepo.UpdateUser(user); var username = user.Username; TempData["message"] = string.Format("{0}, your profile has been updated!", username); return(RedirectToAction("EditAccountDetails")); } return(RedirectToAction("Index", "Home")); } return(View(model)); }
// all fields will be used so instead of Bind we can use just the ready Model for it public async Task <ActionResult> EditAccountDetails(EditAccountDetailsViewModel field) { if (ModelState.IsValid) { var Id = User.Identity.GetUserId(); if (Id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // how to do async update user operation // https://stackoverflow.com/questions/20444022/updating-user-data-asp-net-identity var store = new UserStore <ApplicationUser>(new ApplicationDbContext()); var manager = new UserManager <ApplicationUser>(store); ApplicationUser CurrUser = manager.FindById(Id); if (CurrUser == null) { return(HttpNotFound()); } // update data entered by user in View CurrUser.Name = field.Name; CurrUser.Surname = field.Surname; CurrUser.Country = field.Country; CurrUser.Town = field.Town; CurrUser.Street = field.Street; CurrUser.NumHouse = field.NumHouse; CurrUser.NumFlat = field.NumFlat; CurrUser.ZIPCode = field.ZIPCode; CurrUser.PhoneNumber = field.PhoneNumber; IdentityResult result = await manager.UpdateAsync(CurrUser); if (result.Succeeded) { return(RedirectToAction("Index", new { Message = ManageMessageId.EditAccountDetailsSucceess })); } AddErrors(result); return(View(field)); } return(View(field)); }
public ActionResult EditAccountDetails() { if (User.Identity.IsAuthenticated) { var user = _userRepo.GetUserByUsername(User.Identity.Name); var model = new EditAccountDetailsViewModel { Name = user.Name, Surname = user.Surname, Password = "", Mail = user.Mail, UserId = user.UserId, ImageData = user.ImageData, ImageMimetype = user.ImageMimeType }; return(View(model)); } return(RedirectToAction("LogIn")); }