public ActionResult EditPlace(Place place, HttpPostedFileBase Logo, HttpPostedFileBase Image, FormCollection collection) { if (collection["Save"].IsFilled()) { bool needCreateModer = false; place.IsPost = true; if (/*Logo == null || Logo.ContentLength == 0 || Image == null || Image.ContentLength == 0 ||*/ place.Name.IsNullOrEmpty() || place.Adress.IsNullOrEmpty() || place.Description.IsNullOrEmpty() || !place.MinPay.HasValue || !place.MaxPay.HasValue || place.Type.IsNullOrEmpty() || (place.WishToBeAdmin && !place.AdminMail.IsMailAdress())) { return(View(place)); } if (place.ID > 0) { var p = DB.Places.First(x => x.ID == place.ID); needCreateModer = p.AdminMail != place.AdminMail && place.AdminMail.IsMailAdress() && place.WishToBeAdmin; p.LoadPossibleProperties(place, new[] { "Logo", "Approved" }); place = p; if (!needCreateModer) { place.AdminMail = ""; } } if (!(Logo == null || Logo.ContentLength == 0)) { string fileNameLogo = Guid.NewGuid() + Path.GetExtension(Logo.FileName); string pathLogo = "/Content/Places/" + fileNameLogo; Logo.SaveAs(Server.MapPath(pathLogo)); place.Logo = pathLogo; } if (!(Image == null || Image.ContentLength == 0)) { string fileNameImage = Guid.NewGuid() + Path.GetExtension(Image.FileName); string pathImage = "/Content/Places/" + fileNameImage; Image.SaveAs(Server.MapPath(pathImage)); DB.PlaceImages.InsertOnSubmit(new PlaceImage() { Path = pathImage, Place = place }); } var isNew = false; if (place.ID == 0) { isNew = true; needCreateModer = place.AdminMail.IsMailAdress() && place.WishToBeAdmin; DB.Places.InsertOnSubmit(place); } if (needCreateModer) { var u = DB.Users.FirstOrDefault(x => x.Email.ToLower().Trim() == place.AdminMail.ToLower().Trim()); if (u == null) { var dict = new Dictionary <string, object>(); var pass = new Random(DateTime.Now.Millisecond).GeneratePassword(); dict.Add("UserName", place.AdminMail); dict.Add("Email", place.AdminMail); MembershipProvider.CreateUserAndAccount(place.AdminMail, pass, false, dict); RoleProvider.AddUsersToRoles(new[] { place.AdminMail }, new[] { "Client", "Moderator" }); NotifyMail.SendNotify("PlaceAdminCreate", place.AdminMail, format => string.Format(format, HostName), format => string.Format(format, place.AdminMail, pass, HostName) ); u = DB.Users.First(x => x.Email.ToLower().Trim() == place.AdminMail.ToLower().Trim()); var exist = DB.PlaceAdmins.FirstOrDefault(x => x.PlaceID == place.ID && x.UserID == u.ID); if (exist == null) { exist = new PlaceAdmin() { PlaceID = place.ID, UserID = u.ID }; DB.PlaceAdmins.InsertOnSubmit(exist); } } else { NotifyMail.SendNotify("PlaceAdminExist", place.AdminMail, format => string.Format(format, HostName), format => string.Format(format, "", "", HostName) ); if (u.webpages_UsersInRoles.All(x => x.webpages_Role.RoleName != "Moderator")) { RoleProvider.AddUsersToRoles(new[] { u.Name }, new[] { "Moderator" }); } var exist = DB.PlaceAdmins.FirstOrDefault(x => x.PlaceID == place.ID && x.UserID == u.ID); if (exist == null) { exist = new PlaceAdmin() { PlaceID = place.ID, UserID = u.ID }; DB.PlaceAdmins.InsertOnSubmit(exist); } } } else if (place.PlaceAdmins.Any()) { DB.PlaceAdmins.DeleteAllOnSubmit(place.PlaceAdmins); } DB.SubmitChanges(); return(isNew ? RedirectToAction("Places") : RedirectToAction("EditPlace", new { ID = place.ID, FromSave = 1 })); } else { if (place.ID == 0) { return(RedirectToAction("Places")); } var p = DB.Places.First(x => x.ID == place.ID); if (!p.Approved) { p.Approved = true; if (p.AdminMail.IsMailAdress()) { var user = DB.Users.FirstOrDefault(x => x.Email.ToLower().Trim() == p.AdminMail.ToLower().Trim()); if (user == null) { var dict = new Dictionary <string, object>(); var pass = new Random(DateTime.Now.Millisecond).GeneratePassword(); dict.Add("UserName", p.AdminMail); dict.Add("Email", p.AdminMail); MembershipProvider.CreateUserAndAccount(p.AdminMail, pass, false, dict); RoleProvider.AddUsersToRoles(new[] { p.AdminMail }, new[] { "Client", "Moderator" }); NotifyMail.SendNotify("PlaceAdminCreate", p.AdminMail, format => string.Format(format, HostName), format => string.Format(format, p.AdminMail, pass, HostName) ); user = DB.Users.First(x => x.Email.ToLower().Trim() == p.AdminMail.ToLower().Trim()); var exist = DB.PlaceAdmins.FirstOrDefault(x => x.PlaceID == p.ID && x.UserID == user.ID); if (exist == null) { exist = new PlaceAdmin() { PlaceID = p.ID, UserID = user.ID }; DB.PlaceAdmins.InsertOnSubmit(exist); } } else { NotifyMail.SendNotify("PlaceAdminExist", p.AdminMail, format => string.Format(format, HostName), format => string.Format(format, "", "", HostName) ); if (user.webpages_UsersInRoles.All(x => x.webpages_Role.RoleName != "Moderator")) { RoleProvider.AddUsersToRoles(new[] { user.Name }, new[] { "Moderator" }); } var exist = DB.PlaceAdmins.FirstOrDefault(x => x.PlaceID == p.ID && x.UserID == user.ID); if (exist == null) { exist = new PlaceAdmin() { PlaceID = p.ID, UserID = user.ID }; DB.PlaceAdmins.InsertOnSubmit(exist); } } } } else { p.Approved = false; if (p.AdminMail.IsMailAdress()) { NotifyMail.SendNotify("PlaceAdminBlock", p.AdminMail, format => string.Format(format, HostName), format => string.Format(format, "", "", HostName, p.Name) ); } } DB.SubmitChanges(); return(RedirectToAction("Places")); } }
public ActionResult RegBlockPartner(RegisterModelPartnerStep1 model) { model.IsPost = true; if (!model.Agree || model.Name.IsNullOrEmpty() || model.Surname.IsNullOrEmpty() || !model.Email.IsMailAdress() || model.Phone.IsNullOrEmpty()) { return(PartialView(model)); } var rand = new Random(DateTime.Now.Millisecond); var pass = rand.GeneratePassword(); string digitID = ""; for (int i = 0; i < 500; i++) { var digit = rand.Next(100000000, 999999999); if (!DB.Users.Any(x => x.DigitID == digit.ToString())) { digitID = digit.ToString(); break; } } var confirmKey = Guid.NewGuid(); string link = Url.Action("CheckKey", "Home", new { key = confirmKey }); var message = NotifyMail.SendNotify("Register", model.Email, format => string.Format(format, HostName), format => string.Format(format, HostName, link) ); if (message.IsNullOrEmpty()) { var dict = new Dictionary <string, object>(); dict.Add("UserName", model.Name); dict.Add("UserSurname", model.Surname); dict.Add("Email", model.Email); dict.Add("UserPatrinomic", model.Patrinomic); dict.Add("Phone", model.Phone); dict.Add("RegStep", 1); dict.Add("IsPhoneConfirmed", false); dict.Add("DigitID", digitID); dict.Add("ConfirmKey", confirmKey); try { MembershipProvider.CreateUserAndAccount(model.Email, pass, false, dict); } catch { model.Email = ""; model.Message = "Пользователь с таким E-mail уже зарегистрирован."; return(PartialView(model)); } RoleProvider.AddUsersToRoles(new[] { model.Email }, new[] { "ShopOwner" }); var user = DB.Users.FirstOrDefault(x => x.Email == model.Email); if (user != null) { Logger.WriteEvent(Logger.EventType.UserRegister, "Регистрация в системе", user.ID); } model.Message = "На указанный Вами электронный адрес было выслано письмо<br>Пожалуйста, перейдите по ссылке из письма для продолжения регистрации в системе"; } else { model.Message = message; } return(PartialView(model)); }
public ActionResult EditPartial(User user, FormCollection collection) { var myRoles = DB.Roles.Where(x => CurrentUser.UserRoles.Contains(x.RoleName)).Select(x => x.RoleId).ToList(); var allowedRoles = DB.UserAllowedRoles.Where(x => myRoles.Contains(x.RoleID)) .Select(x => DB.Roles.FirstOrDefault(z => z.RoleId == x.AllowedRoleID)) .Where(x => x != null) .Distinct() .ToList(); ViewBag.AllowedRoles = allowedRoles; user.IsPost = true; if (!user.Email.IsMailAdress() || user.UserName.IsNullOrEmpty() || user.UserSurname.IsNullOrEmpty() || (user.UserRoleRadio == 0 && user.ID != CurrentUser.ID)) { return(PartialView(user)); } if (user.ID > 0) { var dbu = DB.Users.First(x => x.ID == user.ID); dbu.LoadPossibleProperties(user); if (dbu.Email != dbu.Name) { dbu.Name = dbu.Email; } DB.SubmitChanges(); if (user.ID != CurrentUser.ID) { if (dbu.UsersInRoles.All(x => x.RoleId != user.UserRoleRadio)) { DB.UsersInRoles.DeleteAllOnSubmit(dbu.UsersInRoles); DB.SubmitChanges(); DB.UsersInRoles.InsertOnSubmit(new UsersInRole() { RoleId = user.UserRoleRadio, UserId = dbu.ID }); DB.SubmitChanges(); } if (user.Password.IsFilled()) { Logger.WriteEvent(Logger.EventType.UserChangePass, "Изменение пароля для пользователя " + user.Email); WebSecurity.ResetPassword(WebSecurity.GeneratePasswordResetToken(dbu.Name), user.Password); } } Logger.WriteEvent(Logger.EventType.UserEdit, "Редактирование пользователя, Email пользователя - " + user.Email); } else { var dict = new Dictionary <string, object>(); dict.Add("UserName", user.UserName); dict.Add("UserSurname", user.UserSurname); dict.Add("Email", user.Email); dict.Add("UserPatrinomic", user.UserPatrinomic); dict.Add("Phone", user.Phone); var rand = new Random(DateTime.Now.Millisecond); if (user.UserRoleRadio == DB.Roles.First(x => x.RoleName == "ShopOwner").RoleId) { string digitID = ""; for (int i = 0; i < 500; i++) { var digit = rand.Next(100000000, 999999999); if (!DB.Users.Any(x => x.DigitID == digit.ToString())) { digitID = digit.ToString(); break; } } dict.Add("DigitID", digitID); } var pass = rand.GeneratePassword(); var roleName = DB.Roles.First(x => x.RoleId == user.UserRoleRadio).RoleName; MembershipProvider.CreateUserAndAccount(user.Email, pass, false, dict); RoleProvider.AddUsersToRoles(new[] { user.Email }, new[] { roleName }); if (CurrentUser.UserRoles.Contains("ShopOwner")) { DB.Managers.InsertOnSubmit(new Manager() { ManagerUserID = WebSecurity.GetUserId(user.Email), ShopOwnerID = CurrentUser.ID }); DB.SubmitChanges(); } Logger.WriteEvent(Logger.EventType.UserAdding, "Создание пользователя, Email пользователя - " + user.Email); } if (user.ID != CurrentUser.ID) { user.RedirectURL = Url.Action("Index"); user.SavePermissions(DB); user.SaveShops(DB, collection); } else { ViewBag.Message = "Данные успешно сохранены"; } return(PartialView(user)); }
public ActionResult Register(RegisterModel model, HttpPostedFileBase Photo) { model.IsPost = true; if (Photo != null && Photo.ContentLength > 0) { model.Photo = Photo.FileName; } if (model.Email.IsFilled()) { var exist = DB.Users.Where(x => x.Name.ToLower() == model.Email.ToLower() || x.Email.ToLower() == model.Email.ToLower()); if (exist.Any()) { model.Email = null; } } if (!model.Day.HasValue || !model.Month.HasValue || !model.Year.HasValue || !model.UserName.IsFilled() || !model.Town.HasValue || !model.Email.IsFilled() || !model.Email.IsMailAdress() || model.Password.IsNullOrEmpty() /*|| Photo == null || Photo.ContentLength == 0*/) { return(View(model)); } DateTime date; try { date = new DateTime(model.Year.Value, model.Month.Value, model.Day.Value); } catch { model.Month = null; model.Day = null; return(View(model)); } /*var pass = new Random(DateTime.Now.Millisecond).GeneratePassword();*/ var dict = new Dictionary <string, object>(); dict.Add("BirthDate", date); dict.Add("TownID", model.Town); dict.Add("Email", model.Email); dict.Add("Sex", model.Sex); var name = ""; var surname = ""; var ar = model.UserName.Split <string>(" "); name = ar.ElementAt(0); if (ar.Count() > 1) { surname = ar.ElementAt(1); } dict.Add("UserName", name); dict.Add("UserSurname", surname); MembershipProvider.CreateUserAndAccount(model.Email, model.Password, false, dict); RoleProvider.AddUsersToRoles(new[] { model.Email }, new[] { "Client" }); var user = DB.Users.FirstOrDefault(x => x.Email == model.Email); if (user != null && Photo != null && Photo.ContentLength != 0) { string fileName = Guid.NewGuid() + Path.GetExtension(Photo.FileName); string path = "/Content/Avatars/" + fileName; Photo.SaveAs(Server.MapPath(path)); DB.UserPhotos.InsertOnSubmit(new UserPhoto() { Path = path, UserID = user.ID, IsAvatar = true }); DB.SubmitChanges(); } WebSecurity.Login(model.Email, model.Password, true); NotifyMail.SendNotify("Register", model.Email, format => string.Format(format, HostName), format => string.Format(format, model.Email, model.Password, HostName) ); return(RedirectToAction("Index", "Cabinet")); /* * NotifyMail.SendNotify("ForgotPassword", user.Email, * format => string.Format(format, HostName), * format => string.Format(format, user.Email, user.Password, HostName)); */ }
public static SocialAuthResult CheckAuth() { /* * var from = HttpContext.Current.Request["from"]; * if (from.IsNullOrWhiteSpace()) * return new SocialAuthResult(); */ bool isNew = false; var target = String.Format("http://ulogin.ru/token.php?token={0}&host={1}", HttpContext.Current.Request["token"], HttpContext.Current.Request.Url.Host); var wc = new WebClient(); byte[] data = null; try { data = wc.DownloadData(target); } catch (Exception exxxx) { return(new SocialAuthResult() { HasResult = true, Message = "Ошибка при установлении соединения с сервером авторизации", }); } var js = Encoding.UTF8.GetString(data); js = DecodeEncodedNonAsciiCharacters(js); var serializer = new JavaScriptSerializer(); var jsData = serializer.Deserialize <UserDataFromNetwork>(js); if (string.IsNullOrEmpty(jsData.email)) { return(new SocialAuthResult() { HasResult = true, Message = "Для регистрации через соцсеть, в соцсети должен быть указан email", }); } User user = null; try { var db = new xDBDataContext( ConfigurationManager.ConnectionStrings["SexiLoveConnectionString"].ConnectionString); user = db.Users.FirstOrDefault(x => x.Email.ToLower() == jsData.email.ToLower()); //нет такого if (user == null) { var pass = GeneratePassword(6); DateTime bd = DateTime.MinValue; DateTime.TryParse(jsData.bdate, out bd); var dict = new Dictionary <string, object>(); if (bd != DateTime.MinValue) { dict.Add("BirthDate", bd); } var town = db.Towns.FirstOrDefault(x => x.Name.ToLower() == (jsData.city ?? "").ToLower()); if (town == null) { town = db.Towns.FirstOrDefault(x => x.Name.ToLower() == "москва"); } if (town == null) { town = db.Towns.First(); } dict.Add("TownID", town.ID); dict.Add("Email", jsData.email); dict.Add("Sex", jsData.sex == 2); dict.Add("UserName", (jsData.first_name ?? "")); dict.Add("UserSurname", (jsData.last_name ?? "")); MembershipProvider.CreateUserAndAccount(jsData.email, pass, false, dict); RoleProvider.AddUsersToRoles(new[] { jsData.email }, new[] { "Client" }); var userDB = db.Users.FirstOrDefault(x => x.Email == jsData.email); var al = jsData.photo_big.IsNullOrEmpty() ? jsData.photo : jsData.photo_big; if (!al.IsNullOrEmpty()) { var ext = al.Substring(al.Length - 4); string ap = "/Content/Avatars/" + Guid.NewGuid() + (ext.StartsWith(".") ? ext : ".jpg"); try { wc.DownloadFile(al, HttpContext.Current.Server.MapPath(ap)); if (userDB != null) { db.UserPhotos.InsertOnSubmit(new UserPhoto() { Path = ap, UserID = userDB.ID }); db.SubmitChanges(); } } catch { } } WebSecurity.Login(jsData.email, pass, true); user = userDB; isNew = true; } //есть чувак else { //мыло подтверждено и совпало, логин совпал if ((/*jsData.verified_email == 1 && */ jsData.email.ToLower() == user.Email.ToLower())) { FormsAuthentication.SetAuthCookie(jsData.email, false); } //редирект на страницу с формой, где выводим сообщение else { return(new SocialAuthResult() { HasResult = false, Message = (jsData.nickname == user.Email ? "Пользователь с таким логином уже зарегистрирован. Пожалуйста, укажите другой логин." : "Пользователь с таким Email уже зарегистрирован. Пожалуйста укажите другой Email"), }); } } } catch (Exception ex) { return(new SocialAuthResult() { HasResult = false, Message = ex.Message, IsNew = isNew }); } return(new SocialAuthResult() { User = user, HasResult = true, Message = "", IsNew = isNew }); }