Esempio n. 1
0
 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);
     }
 }
Esempio n. 2
0
        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");
            }
        }