private MembershipCreateStatus ValidateUser(CustomerOriginEnum?originID, string username, string password, string promotionName, DateTime?promotionPageVisitTime, out string error) { int nSessionID; MembershipCreateStatus nStatus; error = null; CustomerOriginEnum?remoteOriginID = null; if (originID != null) { remoteOriginID = (CustomerOriginEnum)(int)originID.Value; } try { UserLoginActionResult ular = this.serviceClient.Instance.UserLogin(remoteOriginID, username, new DasKennwort(password), RemoteIp(), promotionName, promotionPageVisitTime); nSessionID = ular.SessionID; nStatus = (MembershipCreateStatus)Enum.Parse(typeof(MembershipCreateStatus), ular.Status); error = ular.ErrorMessage; } catch (Exception e) { return(MembershipCreateStatus.ProviderError); } // try if (nStatus == MembershipCreateStatus.Success) { this.context.SessionId = nSessionID.ToString(CultureInfo.InvariantCulture); Session["UserSessionId"] = nSessionID; Session["UserId"] = username; User user = LegalDocs.Code.Session.Instance.GetUser(username, (int?)originID); user.SessionId = nSessionID.ToString(); } return(nStatus); } // ValidateUser
public JsonResult SignUp( User model, string FirstName, string Surname, string signupPass1, string signupPass2, string securityQuestion, string mobilePhone, string mobileCode, string isInCaptchaMode, int whiteLabelId ) { string id = Guid.NewGuid().ToString("N"); const int idChunkSize = 4; string uniqueID = string.Join("-", Enumerable.Range(0, id.Length / idChunkSize).Select(i => id.Substring(i * idChunkSize, idChunkSize)) ); log.Debug("Sign up client attempt id: '{0}'...", uniqueID); this.cookiesToRemoveOnSignup.Clear(); if (!ModelState.IsValid) { return(GetModelStateErrors(ModelState)); } if (model.SecurityAnswer.Length > 199) { throw new Exception(DbStrings.MaximumAnswerLengthExceeded); } CustomerOrigin uiOrigin = UiCustomerOrigin.Get(); string alibabaID = GetAndRemoveCookie("alibaba_id"); if (uiOrigin.IsAlibaba() && string.IsNullOrWhiteSpace(alibabaID)) { return(Json(new { success = false, errorMessage = "No Alibaba customer id provided.", }, JsonRequestBehavior.AllowGet)); } // if var blm = new WizardBrokerLeadModel(Session); CampaignSourceRef campaignSourceRef = null; if (!blm.BrokerFillsForCustomer) { campaignSourceRef = new CampaignSourceRef { FContent = GetAndRemoveCookie("fcontent"), FMedium = GetAndRemoveCookie("fmedium"), FName = GetAndRemoveCookie("fname"), FSource = GetAndRemoveCookie("fsource"), FTerm = GetAndRemoveCookie("fterm"), FUrl = GetAndRemoveCookie("furl"), FDate = ToDate(GetAndRemoveCookie("fdate")), RContent = GetAndRemoveCookie("rcontent"), RMedium = GetAndRemoveCookie("rmedium"), RName = GetAndRemoveCookie("rname"), RSource = GetAndRemoveCookie("rsource"), RTerm = GetAndRemoveCookie("rterm"), RUrl = GetAndRemoveCookie("rurl"), RDate = ToDate(GetAndRemoveCookie("rdate")), }; } // if string visitTimes = GetAndRemoveCookie("sourceref_time"); var signupModel = new SignupCustomerMultiOriginModel { UserName = model.EMail, Origin = uiOrigin.GetOrigin(), RawPassword = new DasKennwort(signupPass1), RawPasswordAgain = new DasKennwort(signupPass2), PasswordQuestion = Convert.ToInt32(securityQuestion), PasswordAnswer = model.SecurityAnswer, RemoteIp = RemoteIp(), FirstName = FirstName, LastName = Surname, CaptchaMode = isInCaptchaMode == "True", MobilePhone = mobilePhone, MobileVerificationCode = mobileCode, BrokerFillsForCustomer = blm.BrokerFillsForCustomer, WhiteLabelID = whiteLabelId, IsTest = (Request.Cookies["istest"] != null) ? true : (bool?)null, CampaignSourceRef = campaignSourceRef, GoogleCookie = blm.BrokerFillsForCustomer ? string.Empty : GetAndRemoveCookie("__utmz"), ReferenceSource = blm.BrokerFillsForCustomer ? "Broker" : GetAndRemoveCookie("sourceref"), AlibabaID = blm.BrokerFillsForCustomer ? null : GetAndRemoveCookie("alibaba_id"), ABTesting = GetAndRemoveCookie("ezbobab"), VisitTimes = visitTimes, FirstVisitTime = HttpUtility.UrlDecode(visitTimes), RequestedLoanAmount = GetAndRemoveCookie("loan_amount"), RequestedLoanTerm = GetAndRemoveCookie("loan_period"), BrokerLeadID = blm.LeadID, BrokerLeadEmail = blm.LeadEmail, BrokerLeadFirstName = blm.FirstName, }; log.Debug( "Sign up client attempt id: '{0}', model is {1}.", uniqueID, signupModel.ToLogStr() ); try { log.Debug("Sign up client attempt id: '{0}', requesting backend sign up.", uniqueID); UserLoginActionResult signupResult = this.serviceClient.Instance.SignupCustomerMultiOrigin(signupModel); log.Debug("Sign up client attempt id: '{0}', backend sign up complete.", uniqueID); MembershipCreateStatus status = (MembershipCreateStatus)Enum.Parse( typeof(MembershipCreateStatus), signupResult.Status ); log.Debug("Sign up client attempt id: '{0}', status is {1}.", uniqueID, status); if (status == MembershipCreateStatus.DuplicateEmail) { return(Json( new { success = false, errorMessage = signupResult.ErrorMessage, }, JsonRequestBehavior.AllowGet )); } // if if ((status != MembershipCreateStatus.Success) || !string.IsNullOrWhiteSpace(signupResult.ErrorMessage)) { throw new Exception(string.IsNullOrWhiteSpace(signupResult.ErrorMessage) ? string.Format("Failed to sign up (error code is '{0}').", uniqueID) : signupResult.ErrorMessage ); } // if ObjectFactory.GetInstance <IEzbobWorkplaceContext>().SessionId = signupResult.SessionID.ToString(CultureInfo.InvariantCulture); Session["UserSessionId"] = signupResult.SessionID; this.context.SetSessionOrigin(uiOrigin.GetOrigin()); FormsAuthentication.SetAuthCookie(model.EMail, false); HttpContext.User = new GenericPrincipal(new GenericIdentity(model.EMail), new[] { "Customer" }); RemoveCookiesOnSignup(); log.Debug("Sign up client attempt id: '{0}', sign up complete.", uniqueID); return(Json( new { success = true, antiforgery_token = AntiForgery.GetHtml().ToString(), refNumber = signupResult.RefNumber, }, JsonRequestBehavior.AllowGet )); } catch (Exception e) { log.Alert(e, "Failed to sign up, client attempt id: {0}.", uniqueID); return(Json( new { success = false, errorMessage = string.Format( "Failed to sign up, please call support (error code is '{0}').", uniqueID ), }, JsonRequestBehavior.AllowGet )); } // try } // SignUp
private MembershipCreateStatus ValidateUser( CustomerOriginEnum?originID, string username, string password, string promotionName, DateTime?promotionPageVisitTime, out string error ) { log.Debug( "Validating user '{0}' from origin '{1}' password...", username, originID.HasValue ? originID.Value.ToString() : "-- null --" ); int nSessionID; MembershipCreateStatus nStatus; error = null; try { UserLoginActionResult ular = this.serviceClient.Instance.UserLogin( originID, username, new DasKennwort(password), RemoteIp(), promotionName, promotionPageVisitTime ); nSessionID = ular.SessionID; nStatus = (MembershipCreateStatus)Enum.Parse(typeof(MembershipCreateStatus), ular.Status); error = ular.ErrorMessage; } catch (Exception e) { log.Alert( e, "Failed to validate user '{0}' from origin '{1}' credentials.", username, originID.HasValue ? originID.Value.ToString() : "-- null --" ); return(MembershipCreateStatus.ProviderError); } // try if (nStatus == MembershipCreateStatus.Success) { this.context.SessionId = nSessionID.ToString(CultureInfo.InvariantCulture); Session["UserSessionId"] = nSessionID; log.Debug( "User '{0}' from origin '{1}' password has been validated.", username, originID.HasValue ? originID.Value.ToString() : "-- null --" ); } else { log.Debug( "User '{0}' from origin '{1}' password has NOT been validated.", username, originID.HasValue ? originID.Value.ToString() : "-- null --" ); } // if return(nStatus); } // ValidateUser
public JsonResult CustomerLogOn(LogOnModel model) { string customerIp = RemoteIp(); CustomerOriginEnum origin = UiCustomerOrigin.Get().GetOrigin(); if (!ModelState.IsValid) { log.Debug( "Customer log on attempt from remote IP {0} to origin '{1}': model state is invalid, list of errors:", customerIp, origin ); foreach (var val in ModelState.Values) { if (val.Errors.Count < 1) { continue; } foreach (var err in val.Errors) { log.Debug("Model value '{0}' with error '{1}'.", val.Value, err.ErrorMessage); } } // for each value log.Debug("End of list of errors."); return(Json(new { success = false, errorMessage = "User not found or incorrect password." }, JsonRequestBehavior.AllowGet)); } // if var pu = new PasswordUtility(CurrentValues.Instance.PasswordHashCycleCount); log.Debug( "Customer log on attempt from remote IP {0} received " + "with user name '{1}' and hash '{2}' (promotion: {3})...", customerIp, model.UserName, pu.Generate(model.UserName, model.Password), model.PromotionDisplayData ); try { if (this.brokerHelper.IsBroker(model.UserName)) { BrokerProperties bp = this.brokerHelper.TryLogin( model.UserName, model.Password, model.PromotionName, model.PromotionPageVisitTime ); if ((bp != null) && (bp.CurrentTermsID != bp.SignedTermsID)) { Session[Constant.Broker.Terms] = bp.CurrentTerms; Session[Constant.Broker.TermsID] = bp.CurrentTermsID; } // if return(Json(new { success = (bp != null), errorMessage = (bp == null) ? "User not found or incorrect password." : string.Empty, broker = true, })); } // if is broker } catch (Exception e) { log.Warn( e, "Failed to check whether '{0}' is a broker login at origin '{1}', continuing as a customer.", model.UserName, origin ); } // try var loginModel = new LoginCustomerMultiOriginModel { UserName = model.UserName, Origin = origin, Password = new DasKennwort(model.Password), PromotionName = model.PromotionName, PromotionPageVisitTime = model.PromotionPageVisitTime, RemoteIp = customerIp, }; UserLoginActionResult ular = this.serviceClient.Instance.LoginCustomerMutliOrigin(loginModel); if (MembershipCreateStatus.Success.ToString() == ular.Status) { model.SetCookie(LogOnModel.Roles.Customer); this.context.SetSessionOrigin(origin); return(Json(new { success = true, model, }, JsonRequestBehavior.AllowGet)); } // if // If we got this far, something failed, redisplay form return(Json(new { success = false, errorMessage = ular.ErrorMessage }, JsonRequestBehavior.AllowGet)); } // CustomerLogOn