public ActionResult ChangePassword(ChangePassword model) { if (!ModelState.IsValid) { return(View(model)); } var user = DB.Account.Single(x => x.Id == CurrentUser.Id); user.Password = Md5HashHelper.GetHash(model.Pass); user.PasswordUpdated = DateTime.Now; DB.SaveChanges(); Mails.SendPasswordChangeMessage(user, model.Pass); SuccessMessage("Новый пароль сохранен и отправлен на ваш email: " + user.Login); return(RedirectToAction("Index", "Profile")); }
public ActionResult PasswordRecovery(PasswordUpdate model) { if (String.IsNullOrEmpty(model.login)) { ErrorMessage("Вы не указали eMail"); return(View(model)); } var user = DB.Account.FirstOrDefault(x => x.Login == model.login && x.TypeUser == (SByte)TypeUsers.ProducerUser); // пользователь не найден, отсылаем на домашнюю с ошибкой if (user == null) { ErrorMessage($"Пользователь с email {model.login} не найден, обращайтесь на {ConfigurationManager.AppSettings["MailFrom"]}"); return(View(model)); } // если новый или активный: отсылаем новый пароль на почту if (user.EnabledEnum == UserStatus.New || user.EnabledEnum == UserStatus.Active) { var password = GetRandomPassword(); user.Password = Md5HashHelper.GetHash(password); user.PasswordUpdated = DateTime.Now; DB.Entry(user).State = EntityState.Modified; DB.SaveChanges(); Mails.SendPasswordRecoveryMessage(user, password); SuccessMessage($"Новый пароль отправлен на ваш email {model.login}"); } // если заблокирован else if (user.EnabledEnum == UserStatus.Blocked) { ErrorMessage($"Ваша учетная запись заблокирована, обращайтесь на {ConfigurationManager.AppSettings["MailFrom"]}"); } // если запросивший регистрацию else if (user.EnabledEnum == UserStatus.Request) { SuccessMessage($"Ваша заявка на регистрацию еще не рассмотрена, обращайтесь на {ConfigurationManager.AppSettings["MailFrom"]}"); } return(Redirect("~")); }
public override void Process(TagHelperContext context, TagHelperOutput output) { if (!string.IsNullOrWhiteSpace(Email)) { var hash = Md5HashHelper.GetHash(Email); output.TagName = "img"; if (!string.IsNullOrWhiteSpace(Class)) { output.Attributes.Add("class", Class); } if (!string.IsNullOrWhiteSpace(Alt)) { output.Attributes.Add("alt", Alt); } output.Attributes.Add("src", GetAvatarUrl(hash, Size)); output.TagMode = TagMode.SelfClosing; } }
public ActionResult Edit(UserEdit model) { var user = DB.Account.Single(x => x.Id == model.Id); if (!ModelState.IsValid) { SetChangeModel(user, model); ViewBag.IsControlPanelUser = user.TypeUser == (sbyte)TypeUsers.ControlPanelUser; return(View(model)); } var activated = false; if (Request.Form["activate"] != null) { if (user.EnabledEnum == UserStatus.Request) { activated = true; } user.EnabledEnum = UserStatus.New; } else if (Request.Form["block"] != null) { user.EnabledEnum = UserStatus.Blocked; } var groups = DB.AccountGroup.Where(x => model.AccountGroupIds.Contains(x.Id)); user.AccountGroup.Clear(); foreach (var group in groups) { user.AccountGroup.Add(group); } user.AccountRegion.Clear(); foreach (var regionCode in model.AccountRegionIds) { user.AccountRegion.Add(new AccountRegion() { AccountId = user.Id, RegionId = regionCode }); } var password = ""; // если подтверждение регистрации пользователя if (activated) { password = GetRandomPassword(); user.Password = Md5HashHelper.GetHash(password); user.PasswordUpdated = DateTime.Now; } user.AppointmentId = model.AppointmentId; user.LastUpdatePermisison = DateTime.Now; DB.SaveChanges(); // отправка сообщения пользователю с паролем if (activated) { Mails.SendAccountVerificationMessage(user, password); } SuccessMessage("Изменения успешно сохранены"); // если админ - на список админов if (user.TypeUser == (sbyte)TypeUsers.ControlPanelUser) { return(RedirectToAction("AdminList")); } return(RedirectToAction("Index")); }
private Account SaveAccount(AccountCompany accountCompany, RegViewModel Reg_ViewModel = null, RegDomainViewModel RegDomain_ViewModel = null, RegNotProducerViewModel RegNotProducer_ViewModel = null, string Pass = null) { var newAccount = new Account(); newAccount.EnabledEnum = UserStatus.New; newAccount.TypeUser = (sbyte)TypeUsers.ProducerUser; newAccount.CompanyId = accountCompany.Id; // регистрация первого пользователя компании if (Reg_ViewModel != null) { newAccount.Login = Reg_ViewModel.login; newAccount.Password = Md5HashHelper.GetHash(Pass); newAccount.PasswordUpdated = DateTime.Now; newAccount.FirstName = Reg_ViewModel.FirstName; newAccount.LastName = Reg_ViewModel.LastName; newAccount.OtherName = Reg_ViewModel.OtherName; newAccount.Name = Reg_ViewModel.LastName + " " + Reg_ViewModel.FirstName + " " + Reg_ViewModel.OtherName; newAccount.Phone = Reg_ViewModel.PhoneNumber; newAccount.AppointmentId = Reg_ViewModel.AppointmentId; } // регистрация второго и последующих пользователей производителя if (RegDomain_ViewModel != null) { newAccount.Login = RegDomain_ViewModel.Mailname + "@" + DB.CompanyDomainName.Single(x => x.Id == RegDomain_ViewModel.EmailDomain).Name; newAccount.Password = Md5HashHelper.GetHash(Pass); newAccount.PasswordUpdated = DateTime.Now; newAccount.FirstName = RegDomain_ViewModel.FirstName; newAccount.LastName = RegDomain_ViewModel.LastName; newAccount.OtherName = RegDomain_ViewModel.OtherName; newAccount.Name = RegDomain_ViewModel.LastName + " " + RegDomain_ViewModel.FirstName + " " + RegDomain_ViewModel.OtherName; newAccount.Phone = RegDomain_ViewModel.PhoneNumber; newAccount.AppointmentId = RegDomain_ViewModel.AppointmentId; } // Если компания в списке отсутствует if (RegNotProducer_ViewModel != null) { // создали новую должность var appointment = new AccountAppointment() { Name = RegNotProducer_ViewModel.Appointment, GlobalEnabled = false }; DB.Entry(appointment).State = EntityState.Added; DB.SaveChanges(); newAccount.Login = RegNotProducer_ViewModel.login; newAccount.FirstName = RegNotProducer_ViewModel.FirstName; newAccount.LastName = RegNotProducer_ViewModel.LastName; newAccount.OtherName = RegNotProducer_ViewModel.OtherName; newAccount.Name = RegNotProducer_ViewModel.LastName + " " + RegNotProducer_ViewModel.FirstName + " " + RegNotProducer_ViewModel.OtherName; newAccount.Phone = RegNotProducer_ViewModel.PhoneNumber; newAccount.AppointmentId = appointment.Id; // особый статус newAccount.EnabledEnum = UserStatus.Request; } DB.Entry(newAccount).State = EntityState.Added; DB.SaveChanges(); return(newAccount); }
public ActionResult UserAuthentication(LoginValidation user) { // валидация if (String.IsNullOrEmpty(user.login) || String.IsNullOrEmpty(user.password)) { ErrorMessage("Некорректно введены данные. Вашим логином является email, указанный при регистрации. Пароль при регистрации был выслан на ваш email"); ViewBag.CurrentUser = null; return(Redirect("~")); } // проверка наличия в БД var thisUser = DB.Account.SingleOrDefault(x => x.Login == user.login && x.TypeUser == SbyteTypeUser); if (thisUser == null) { ErrorMessage("Пользователь не найден. Вашим логином является email, указанный при регистрации"); ViewBag.CurrentUser = null; return(Redirect("~")); } // проверка пароля var passHash = Md5HashHelper.GetHash(user.password); if (passHash != thisUser.Password) { ErrorMessage("Неправильно введен пароль"); ViewBag.CurrentUser = null; return(Redirect("~")); } // если логинится не впервый раз и не заблокирован if (thisUser.EnabledEnum == UserStatus.Active) { CurrentUser = thisUser; return(Autentificate()); } // если логинится впервые else if (thisUser.EnabledEnum == UserStatus.New) { var group = DB.AdminGroup(); group.Account.Add(thisUser); DB.SaveChanges(); thisUser.PasswordUpdated = DateTime.Now; thisUser.EnabledEnum = UserStatus.Active; DB.Entry(thisUser).State = EntityState.Modified; DB.SaveChanges(); CurrentUser = thisUser; SuccessMessage("Вы успешно подтвердили свою регистрацию на сайте"); return(Autentificate()); } // аккаунт заблокирован else if (thisUser.EnabledEnum == UserStatus.Blocked) { CurrentUser = null; ErrorMessage("Ваша учетная запись заблокирована, обращайтесь на " + ConfigurationManager.AppSettings["MailFrom"]); return(Redirect("~")); } // заявка на регистрацию else if (thisUser.EnabledEnum == UserStatus.Request) { CurrentUser = null; SuccessMessage("Ваша заявка на регистрацию еще не рассмотрена, обращайтесь на " + ConfigurationManager.AppSettings["MailFrom"]); return(Redirect("~")); } return(Redirect("~")); }