public ActionResult Edit(UserEditModel model)
        {
            if (User.Identity.Name != model.Username && !User.IsInRole(Definitions.Roles.Administrator))
            {
                return RedirectToAction("Unauthorized", "Home");
            }

            if (ModelState.IsValid)
            {
                bool valid = true;

                if (!User.IsInRole(Definitions.Roles.Administrator) && (model.OldPassword == null && model.NewPassword != null))
                {
                    ModelState.AddModelError("OldPassword", Resources.Account_Edit_OldPasswordEmpty);
                    valid = false;
                }

                if (model.OldPassword != null && !MembershipService.ValidateUser(model.Username, model.OldPassword))
                {
                    ModelState.AddModelError("OldPassword", Resources.Account_Edit_OldPasswordIncorrect);
                    valid = false;
                }

                if (User.IsInRole(Definitions.Roles.Administrator) && model.Username == User.Identity.Name && !(model.Roles != null && model.Roles.Contains(Definitions.Roles.Administrator)))
                {
                    ModelState.AddModelError("Roles", Resources.Account_Edit_CannotRemoveYourselfFromAdminRole);
                    valid = false;
                }

                if (valid)
                {
                    MembershipService.UpdateUser(model.Username, model.Name, model.Surname, model.Email, model.NewPassword);
                    Roles.RemoveUserFromRoles(model.Username, Roles.GetAllRoles());
                    if (model.Roles != null)
                    {
                        Roles.AddUserToRoles(model.Username, model.Roles);
                    }
                    ViewBag.UpdateSuccess = true;
                }
            }

            PopulateRoles();
            return View(model);
        }
        public ActionResult Edit(string id)
        {
            if (!id.Equals(User.Id(), StringComparison.OrdinalIgnoreCase) && !User.IsInRole(Definitions.Roles.Administrator))
            {
                return RedirectToAction("Unauthorized", "Home");
            }

            if (MembershipService.IsReadOnly())
            {
                return RedirectToAction("Detail", "Account", new { id = id });
            }

            if (!String.IsNullOrEmpty(id))
            {
                var user = MembershipService.GetUser(id);
                if (user != null)
                {
                    var model = new UserEditModel
                    {
                        Username = user.Name,
                        Name = user.GivenName,
                        Surname = user.Surname,
                        Email = user.Email,
                        Roles = RoleProvider.GetRolesForUser(user.Name),
                    };
                    PopulateRoles();
                    return View(model);
                }
            }
            return View();
        }
        public ActionResult Edit(string id)
        {
            if (User.Identity.Name != id && !User.IsInRole(Definitions.Roles.Administrator))
            {
                return RedirectToAction("Unauthorized", "Home");
            }

            if (!String.IsNullOrEmpty(id))
            {
                var user = MembershipService.GetUser(id);
                if (user != null)
                {
                    var roles = Roles.GetRolesForUser(id);

                    var model = new UserEditModel
                    {
                        Username = id,
                        Name = user.Name,
                        Surname = user.Surname,
                        Email = user.Email,
                        Roles = roles,
                    };
                    PopulateRoles();
                    return View(model);
                }
            }
            return View();
        }
        public ActionResult Edit(Guid id)
        {
            if (id != User.Id() && !User.IsInRole(Definitions.Roles.Administrator))
            {
                return RedirectToAction("Unauthorized", "Home");
            }

            if (MembershipService.IsReadOnly())
            {
                return RedirectToAction("Detail", "Account", new { id = id });
            }

            var user = MembershipService.GetUserModel(id);
            if (user != null)
            {
                var model = new UserEditModel
                {
                    Id = user.Id,
                    Username = user.Username,
                    Name = user.GivenName,
                    Surname = user.Surname,
                    Email = user.Email,
                    Roles = RoleProvider.GetAllRoles(),
                    SelectedRoles = RoleProvider.GetRolesForUser(user.Id)
                };
                return View(model);
            }
            return View();
        }