Esempio n. 1
0
        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
Esempio n. 2
0
        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
Esempio n. 3
0
        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
Esempio n. 4
0
        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