public JsonResult LostPwd(int tkn, string email) { UserSessionSet.UserSession session = UserSessionSet.Current.GetSessionByCookie(this.Request, tkn); if (session.LostPwdActivated == true) // повторная попытка блокируется { throw new HttpResponseException(HttpStatusCode.Forbidden); } UserInfo[] rows = service.GetUsersByEmail(email, session.Key.ToString()); if (!rows.Any()) { System.Threading.Thread.Sleep(new TimeSpan(0, 1, 0)); // спим 1 минуту для усложнения сканирования throw new HttpResponseException(HttpStatusCode.Forbidden); } if (rows.Length != 1) { throw new HttpResponseException(HttpStatusCode.Forbidden); } session.User = rows[0]; // просим службу прислать sms-пароль XElement xanswer = service.RequestLostPasswordRestore(session.User.UserId, session.Key.ToString()); if (int.Parse(xanswer.Element("Rc").Value) != 0) // если ошибка { throw new HttpResponseException(HttpStatusCode.Forbidden); } service.UpdateUserLastActivity(session.User.UserId, session.Key.ToString()); session.LostPwdActivated = true; return(Json(new { rc = 0 }, JsonRequestBehavior.AllowGet)); }
public JsonResult LoginStepOne(int tkn, string email) { // либо получаем сессию, либо создаем UserSessionSet.UserSession session = UserSessionSet.Current.GetSessionByCookie(this.Request, tkn); if (session.State == UserSessionSet.SessionStates.Authenticated) { RedirectToAction("Index", "CallRegistry"); } UserInfo[] rows = service.GetUsersByEmail(email, session.Key.ToString()); if (!rows.Any()) { return(Json(new { rc = 5, msg = String.Empty }, JsonRequestBehavior.AllowGet)); } session.User = rows[0]; if (!session.User.IsActivatedEMail) { return(Json(new { rc = 4, msg = String.Empty }, JsonRequestBehavior.AllowGet)); } if (!session.User.IsActivatedPhone) { return(Json(new { rc = 3, msg = "У пользователя не активирован телефон." }, JsonRequestBehavior.AllowGet)); } // Отправка смс-ки XElement xanswer = service.RequestSmsPassword(session.User.UserId, session.Key.ToString()); service.UpdateUserLastActivity(session.User.UserId, session.Key.ToString()); return(Json(new { rc = xanswer.Element("Rc").getValue(5), msg = xanswer.Element("Msg").getValue("") }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Активация email пользователя, вывод ему странички для активации телефона /// </summary> /// <param name="id">Идентификатор пользователя</param> /// <param name="key">Guid, высланный ему в письме</param> public ActionResult ActivateEMail(int id, Guid key) { // либо получаем сессию, либо создаем UserSessionSet.UserSession session = UserSessionSet.Current.GetOrCreateSessionByCookie(this.Request, this.Response); if (session.State == UserSessionSet.SessionStates.Authenticated) { RedirectToAction("Index", "CallRegistry"); } session.UserLink(id, session.Key.ToString()); if (session.User.IsActivatedEMail == false && session.User.EMailActivateGuid != key.ToString()) { throw new HttpResponseException(HttpStatusCode.Forbidden); } // регистрация пользователя в тех.зоне (sms-ки отправляет она сама) service.ActivateUserEmail(session.User, session.Key.ToString()); ActivateEMailModel model = new ActivateEMailModel { User = session.User, tkn = session.NewSingleUseToken() }; return(View(model)); }
public ActionResult Index() { UserSessionSet.UserSession session = UserSessionSet.Current.GetOrCreateSessionByCookie(this.Request, this.Response); if (session.State == UserSessionSet.SessionStates.Authenticated) { return(RedirectToAction("Index", "CallRegistry")); } service.UpdateAnonymousSession(session.Key.ToString()); return(View(new AuthRegFormModel { tkn = session.NewSingleUseToken(), login_Email = this.Request.Cookies.AllKeys.Contains("l_mail") ? this.Request.Cookies["l_mail"].Value : "" })); }
public JsonResult LoginStepTwo(int tkn, string email, string sms) { UserSessionSet.UserSession session = UserSessionSet.Current.GetSessionByCookie(this.Request, tkn); UserInfo[] rows = service.GetUsersByEmail(email, session.Key.ToString()); if (rows.Any() == false) { System.Threading.Thread.Sleep(new TimeSpan(0, 0, 20)); // спим 20 секунд для усложнения сканирования return(Json(new { rc = 2, msg = "Пользователь, с указанной Вами электронной почтой не зарегистрирован в системе" }, JsonRequestBehavior.AllowGet)); } if (rows.Length != 1) { return(Json(new { rc = 3, msg = "Регистрационная информация разрушена, пожалуйства обратитесь в службу технической поддержки" }, JsonRequestBehavior.AllowGet)); } session.User = rows[0]; // отдаем на проверку sms-пароль XElement xanswer = service.CheckSmsPassword(session.Key.ToString(), sms); if (int.Parse(xanswer.Element("Rc").Value) != 0) // если ошибка { return(Json(new { rc = int.Parse(xanswer.Element("Rc").Value), timeout = xanswer.Element("timeout").GetValueByPath <int>(0), msg = xanswer.Element("Msg").Value }, JsonRequestBehavior.AllowGet)); } service.UpdateUserAcceptAdmin(session.User.UserId, session.Key.ToString()); session.State = UserSessionSet.SessionStates.Authenticated; session.DistrictId = xanswer.Element("DistrictId").getValue(-1); if (xanswer.Element("Districts").getValue("") != "") { session.FilterDistricts = xanswer.Element("Districts").getValue("").Split(',').Select(u => long.Parse(u)).ToList(); } if (this.Response.Cookies.AllKeys.Contains("l_mail")) { this.Response.Cookies["l_mail"].Value = session.User.EMail; } else { this.Response.SetCookie(new HttpCookie("l_mail", session.User.EMail) { Path = "/", Expires = DateTime.MaxValue }); } // return(Json(new { rc = 0 }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Активация номера телефона /// </summary> public JsonResult ActivatePhone(int tkn, string smspwd) { UserSessionSet.UserSession session = UserSessionSet.Current.GetSessionByCookie(this.Request, tkn); if (String.IsNullOrEmpty(smspwd)) { return(Json(new { code = 2, message = string.Empty }, JsonRequestBehavior.AllowGet)); } // отдаем на проверку sms-пароль var xanswer = service.ActivateUserPhone(session.User, session.Key.ToString(), smspwd); if (int.Parse(xanswer.Element("Rc").Value) != 0) // если ошибка { return(Json(new { code = int.Parse(xanswer.Element("Rc").Value), message = xanswer.Element("Msg").Value }, JsonRequestBehavior.AllowGet)); } return(Json(new { code = 0, message = string.Empty }, JsonRequestBehavior.AllowGet)); }
public JsonResult Registration(AuthRegFormModel request) { UserSessionSet.UserSession session = UserSessionSet.Current.GetSessionByCookie(this.Request, request.tkn); service.UpdateAnonymousSession(session.Key.ToString()); if (session.VerifyCaptcha(request.captchaId, request.captchaInputText) == false) { return(Json(new { code = 1, message = string.Empty }, JsonRequestBehavior.AllowGet)); } if (request.reg_Phone == null || request.reg_Email == null) { return(Json(new { code = 201, message = string.Empty }, JsonRequestBehavior.AllowGet)); } if (request.reg_F == null || request.reg_I == null || request.reg_O == null) { return(Json(new { code = 202, message = string.Empty }, JsonRequestBehavior.AllowGet)); } if (request.reg_Pos == null || request.reg_Org == null) { return(Json(new { code = 203, message = string.Empty }, JsonRequestBehavior.AllowGet)); } UserInfo[] rows = service.GetUsersByEmail(request.reg_Email, session.Key.ToString()); if (rows.Any() == true) { return(Json(new { code = 3, message = "Пользователь, с указанной Вами электронной почтой уже зарегистрирован" }, JsonRequestBehavior.AllowGet)); } session.User = service.AddUser(new UserInfo { UserId = 0, F = request.reg_F, I = request.reg_I, O = request.reg_O, DisabledCause = "", IsAcceptAdmin = false, IsActivatedEMail = false, IsActivatedPhone = false, IsDisabled = false, EMail = request.reg_Email, Phone = request.reg_Phone.Replace(" ", "").Replace("(", "").Replace(")", "").Replace("-", ""), LastActivity = DateTime.Now, SmsCodeHash = new byte[32], EMailActivateGuid = Guid.NewGuid().ToString(), XmlInfo = new XElement("data", new XElement("Organization", request.reg_Org)).ToString(), ADName = "" }, session.Key.ToString()); new EMailSender { SmtpServer = Settings.Default.SmtpServer, UserName = Settings.Default.SmtpServerUsername, FromEMail = Settings.Default.SmtpServerUsername, Password = Settings.Default.SmtpServerPassword }.Send(request.reg_Email, "Активация регистрационных данных в CRM ЗАПАД", "Здравствуйте!\r\n" + "Вы оставили заявку за создание регистрационной информации для работы в ООО Запад на сайте crm.ulzapad.ru\r\n" + "Для того, чтобы активировать Ваш кабинет, пройдите по ссылке http://" + Settings.Default.domainName + "/Account/ActivateEMail?id=" + session.User.UserId + "&key=" + session.User.EMailActivateGuid + "\r\n" + "Если Вы не оставляли таковую заявку, либо Ваши планы изменились - просто проигнорируйте данное письмо.\r\n" + "Отвечать на это письмо не нужно."); request.captchaId.RemoveCaptcha(); return(Json(new { code = 0, message = string.Empty }, JsonRequestBehavior.AllowGet)); }