public ActionResult Edit() { using (var context = new TicTacToeEntities()) { var user = context.Users.FirstOrDefault(x=>x.Login == User.Identity.Name); if (user == null) { this.GetLog().Error("Ошибка редактирования настроек. Не найден пользователь " + User.Identity.Name); Common.SetSessionMessage(Session, "Ошибка редактирования настроек.", "Настройки учётной записи"); return RedirectToAction("Result", "Home"); } var model = new EditCredentials{ Email = user.Email, Login = user.Login }; return View(model); } }
public ActionResult Edit(EditCredentials model) { using (var context = new TicTacToeEntities()) { if (!UserProvider.ValidateEmail(model.Email)) ModelState.AddModelError("Email", "Email не соответствует требованиям"); if (!string.IsNullOrEmpty(model.Password) && string.IsNullOrEmpty(model.OldPassword)) ModelState.AddModelError("OldPassword", "Для смены пароля необходимо ввести старый пароль"); if (!string.IsNullOrEmpty(model.OldPassword) && !Membership.Provider.ValidateUser(model.Login, model.OldPassword)) ModelState.AddModelError("OldPassword", "Пароль не верный"); if (!string.IsNullOrEmpty(model.OldPassword) && !string.IsNullOrEmpty(model.Password) && !UserProvider.ValidatePassword(model.Password)) ModelState.AddModelError("Password", "Новый пароль не соответствует требованиям"); if (string.Compare(model.Password, model.RePassword) != 0) ModelState.AddModelError("RePassword", "Пароли не совпадают"); // проверка на смену email if (context.Users.Any(x => x.Email == model.Email && x.Login != User.Identity.Name)) ModelState.AddModelError("Email", "Такой Email уже зарегестрирован в системе"); if (!ModelState.IsValid) { model.OldPassword = string.Empty; model.Password = string.Empty; model.RePassword = string.Empty; return View(model); } var user = context.Users.FirstOrDefault(x => x.Login == User.Identity.Name); if (user == null) { this.GetLog().Error("Ошибка редактирования настроек. Не найден пользователь " + User.Identity.Name); Common.SetSessionMessage(Session, "Ошибка редактирования настроек.", "Настройки учётной записи"); return RedirectToAction("Result", "Home"); } using (var trans = new TransactionScope()) { user.Email = model.Email; context.SaveChanges(); // меняем пароль bool Changed = true; if (!string.IsNullOrEmpty(model.OldPassword) && !string.IsNullOrEmpty(model.Password)) Changed = Membership.Provider.ChangePassword(user.Login, model.OldPassword, model.Password); if (!Changed) { this.GetLog().Error("Ошибка изменения пароля пользователя. " + user.Login); Common.SetSessionMessage(Session, "Ошибка редактирования настроек.", "Настройки учётной записи"); return RedirectToAction("Result", "Home"); } trans.Complete(); } Common.SetSessionMessage(Session, "Ваши учетные данные успешно изменены.", "Настройки учётной записи"); return RedirectToAction("Result", "Home"); } }