private void AddBillingOfficePhone(BillingOfficePhoneDto billingOfficePhoneDto, BillingOffice billingOffice) { var phoneType = _mappingHelper.MapLookupField <BillingOfficePhoneType> (billingOfficePhoneDto.BillingOfficePhoneType); var phoneNumber = new PhoneBuilder() .WithPhoneNumber(billingOfficePhoneDto.PhoneNumber) .WithPhoneExtensionNumber(billingOfficePhoneDto.Extension) .Build(); var billingOfficePhone = new BillingOfficePhone(phoneType, phoneNumber); billingOffice.AddPhoneNumber(billingOfficePhone); }
bool IService.SendMessage(string phoneTo, string messageText) { //todo setError(null); var phone = PhoneBuilder.ParseString(phoneTo); if (!phone.IsCorrect) { throw new ArgumentException("Некорректный номер телефона: " + phone.Error, nameof(phoneTo)); } var message = new Message() { To = new Contact <string>("", phone.ToString()), Subject = string.Empty, Body = messageText, IdMessageType = IdMessageType }; return(RegisterMessage(message)); }
public JsonResult RegisterSave(Model.Register model) { var answer = JsonAnswer <User>(); try { if (ModelState.IsValid) { using (var db = new CoreContext()) { if (!string.IsNullOrEmpty(model.email)) { if (db.Users.Where(x => x.email.ToLower() == model.email.ToLower()).Count() > 0) { ModelState.AddModelError(nameof(model.email), "Этот email-адрес уже используется!"); } } if (!string.IsNullOrEmpty(model.phone)) { var phone = PhoneBuilder.ParseString(model.phone); if (!phone.IsCorrect) { ModelState.AddModelError(nameof(model.phone), phone.Error); } else { model.phone = phone.ParsedPhoneNumber; if (db.Users.Where(x => x.phone.ToLower() == model.phone.ToLower()).Count() > 0) { ModelState.AddModelError(nameof(model.phone), "Этот номер телефона уже используется!"); } } } } } if (ModelState.IsValid) { var preparedData = new Model.PreparedForRegister(); var symbols = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; var salt = ""; var rand = new Random(); for (int i = 0; i < 5; i++) { var index = rand.Next(0, symbols.Length - 1); salt = salt + symbols[index]; } preparedData.salt = salt; var regMode = AppCore.WebConfig.register_mode; switch (regMode) { case RegisterMode.SelfConfirmation: preparedData.State = Core.Db.UserState.RegisterNeedConfirmation; break; case RegisterMode.Immediately: preparedData.State = Core.Db.UserState.Active; break; case RegisterMode.ManualCheck: preparedData.State = Core.Db.UserState.RegisterWaitForModerate; break; } preparedData.email = model.email; preparedData.phone = model.phone; preparedData.IP_reg = Request.ServerVariables["REMOTE_ADDR"]; preparedData.password = model.password; preparedData.name = model.name; preparedData.DateReg = DateTime.Now; preparedData.Fields.CopyValuesFrom(model.Fields); preparedData.Superuser = 0; var isSuperuserNeeded = AppCore.GetModulesManager().GetModule <Auth.ModuleAuth>()?.IsSuperuserNeeded() ?? false; if (isSuperuserNeeded) { preparedData.Superuser = 1; preparedData.State = Core.Db.UserState.Active; } var result = Module.RegisterUser(preparedData); if (isSuperuserNeeded && result.Success) { result.Message += " Учетная запись была помечена как \"Суперпользователь\" и немедленно активирована."; } answer = result; } } catch (Exception ex) { Debug.WriteLine("RegisterSave: {0}", ex.Message); answer.FromException(ex); } return(ReturnJson(answer)); }
public ActionResult profileSave([Bind(Prefix = nameof(Design.Model.Profile.Edit))] Model.ProfileEdit model) { var answer = JsonAnswer <User>(); var prefix = nameof(Design.Model.Profile.Edit) + "."; try { //if (!this.IsReCaptchaValid && !AppCore.GetUserContextManager().GetCurrentUserContext().IsSuperuser) ModelState.AddModelError("ReCaptcha", "Вы точно не робот?"); if (model == null) { throw new Exception("Нет переданных данных."); } using (var db = new UnitOfWork <User>()) using (var trans = db.CreateScope()) { var data = db.Repo1.Where(x => x.IdUser == model.ID).FirstOrDefault(); if (data == null) { throw new Exception("Указанный пользователь не найден."); } else { Module.CheckPermissionToEditOtherUser(model.ID); } if (ModelState.IsValid) { if (ModelState.Keys.Contains(prefix + nameof(model.email))) { model.email = model.email?.ToLower(); data.email = data.email?.ToLower(); if (data.email != model.email) { var others = db.Repo1.AsNoTracking().Where(x => x.email.ToLower() == model.email && x.IdUser != data.IdUser).Count(); if (others > 0) { ModelState.AddModelError(prefix + nameof(model.email), "Такой email-адрес уже используется!"); } else { data.email = model.email; } } } if (ModelState.Keys.Contains(prefix + nameof(model.phone))) { model.phone = model.phone?.ToLower(); data.phone = data.phone?.ToLower(); if (data.phone != model.phone) { if (string.IsNullOrEmpty(model.phone)) { model.phone = null; } else { var others = db.Repo1.AsNoTracking().Where(x => x.phone.ToLower() == model.phone && x.IdUser != data.IdUser).Count(); if (others > 0) { ModelState.AddModelError(prefix + nameof(model.phone), "Такой номер телефона уже используется!"); } else { var phone = PhoneBuilder.ParseString(model.phone); if (!phone.IsCorrect) { ModelState.AddModelError(prefix + nameof(model.phone), phone.Error); } else { data.phone = phone.ParsedPhoneNumber; } } } } } } if (ModelState.IsValid) { if (ModelState.Keys.Contains(prefix + nameof(model.name))) { data.name = model.name; } if (ModelState.Keys.Contains(prefix + nameof(model.IdPhoto))) { if (model.IdPhoto.HasValue) { AppCore.Get <FileManager>().UpdateExpiration(model.IdPhoto.Value, null); } data.IdPhoto = model.IdPhoto; } if (ModelState.Keys.Contains(prefix + nameof(model.Comment))) { data.Comment = model.Comment; } data.Fields.CopyValuesFrom(model.Fields, fdata => ModelState.Keys.Contains(prefix + "Fields.fieldValue_" + fdata.IdField)); data.DateChange = DateTime.Now.Timestamp(); db.SaveChanges(); trans.Commit(); answer.Data = data; answer.FromSuccess("Сохранение данных прошло успешно!"); } } } catch (Exception ex) { Debug.WriteLine("ProfileSave: {0}", ex); answer.FromException(ex); } return(ReturnJson(answer)); }
public void SetPhoneBuilder(PhoneBuilder phoneBuilder) { this.phoneBuilder = phoneBuilder; }
private ExecutionAuthResult CheckLogin(int idUser, string login, string password, DB.CoreContext db, out DB.User outData) { outData = null; try { if (idUser <= 0 && string.IsNullOrEmpty(login)) { return(new ExecutionAuthResult(eAuthResult.WrongAuthData, "Не указаны реквизиты для авторизации!")); } List <DB.User> query = null; bool directAuthorize = false; // Если в $user передан id и $password не передан вообще. if (idUser > 0) { query = db.Users.Where(x => x.IdUser == idUser).ToList(); directAuthorize = true; } // Если Email if (query == null && login.isEmail()) { switch (AppCore.WebConfig.userAuthorizeAllowed) { case eUserAuthorizeAllowed.Nothing: return(new ExecutionAuthResult(eAuthResult.AuthDisabled, "Авторизация запрещена.")); case eUserAuthorizeAllowed.OnlyPhone: return(new ExecutionAuthResult(eAuthResult.AuthMethodNotAllowed, "Авторизация возможна только по номеру телефона.")); case eUserAuthorizeAllowed.EmailAndPhone: query = (from p in db.Users where string.Compare(p.email, login, true) == 0 select p).ToList(); break; case eUserAuthorizeAllowed.OnlyEmail: query = (from p in db.Users where string.Compare(p.email, login, true) == 0 select p).ToList(); break; } } // Если номер телефона if (query == null) { var phone = PhoneBuilder.ParseString(login); if (phone.IsCorrect) { switch (AppCore.WebConfig.userAuthorizeAllowed) { case eUserAuthorizeAllowed.Nothing: return(new ExecutionAuthResult(eAuthResult.AuthDisabled, "Авторизация запрещена.")); case eUserAuthorizeAllowed.OnlyEmail: return(new ExecutionAuthResult(eAuthResult.AuthMethodNotAllowed, "Авторизация возможна только через электронную почту.")); case eUserAuthorizeAllowed.EmailAndPhone: query = (from p in db.Users where string.Compare(p.phone, phone.ParsedPhoneNumber, true) == 0 select p).ToList(); break; case eUserAuthorizeAllowed.OnlyPhone: query = (from p in db.Users where string.Compare(p.phone, phone.ParsedPhoneNumber, true) == 0 select p).ToList(); break; } } else { if (!login.isEmail()) { return(new ExecutionAuthResult(eAuthResult.WrongAuthData, "Переданные данные не являются ни номером телефона, ни адресом электронной почты.")); } } } if (query == null) { return(new ExecutionAuthResult(eAuthResult.UnknownError, "Что-то пошло не так во время авторизации.")); } if (query.Count == 1) { var res = query.First(); if (directAuthorize || res.password == UsersExtensions.hashPassword(password)) { outData = res; return(new ExecutionAuthResult(eAuthResult.Success)); } else { return(new ExecutionAuthResult(eAuthResult.WrongPassword, "Неверный пароль.")); } } else if (query.Count > 1) { AppCore.Get <MessagingManager <WebApplication> >().GetCriticalMessagesReceivers().ForEach(x => x.SendToAdmin("Одинаковые реквизиты входа!", "Найдено несколько пользователей с логином '" + login + "'")); return(new ExecutionAuthResult(eAuthResult.MultipleFound, "Найдено несколько пользователей с логином '" + login + "'. Обратитесь к администратору для решения проблемы.")); } else { return(new ExecutionAuthResult(eAuthResult.NothingFound, $"Пользователь '{login}' не найден в базе данных.")); } } catch (Exception ex) { this.RegisterEvent(EventType.Error, "Ошибка во время поиска и проверки пользователя", $"IdUser={idUser}, Login='******'.", null, ex); return(new ExecutionAuthResult(eAuthResult.UnknownError, "Неизвестная ошибка во время проверки авторизации.")); } }