Exemplo n.º 1
0
        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));
        }
Exemplo n.º 3
0
        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"));
        }