public async Task <PasswordResetResult> ValidateRequest(string userEmail, string secret)
        {
            if (!await _identityProvider.VerifyUserExists(userEmail))
            {
                return(PasswordResetResult.BadUsername);
            }

            if (!await _identityProvider.VerifyUserEmailConfirmed(userEmail))
            {
                if (!await _identityProvider.VerifyUserPassword(userEmail, secret))
                {
                    return(PasswordResetResult.Expired(userEmail));
                }
            }

            return(PasswordResetResult.Successful);
        }
Example #2
0
        public PasswordResetResult ValidateRequest(string userName, string secret)
        {
            if (!WebSecurity.UserExists(userName))
            {
                return(PasswordResetResult.BadUsername);
            }

            if (!WebSecurity.IsConfirmed(userName))
            {
                if (!WebSecurity.ConfirmAccount(userName, secret))
                {
                    return(PasswordResetResult.Expired(userName));
                }
            }

            return(PasswordResetResult.Successful);
        }
Example #3
0
        private async Task <PasswordResetResult> ValidateResetModel(PasswordResetModel model)
        {
            var failedRequiredField =
                ValidateRequired <PasswordResetResult, PasswordResetModel>(x => x.Password, model) ??
                ValidateRequired <PasswordResetResult, PasswordResetModel>(x => x.ConfirmPassword, model);

            if (failedRequiredField != null)
            {
                return(failedRequiredField);
            }

            var confirmationMismatch = !model.Password.Equals(model.ConfirmPassword);

            if (confirmationMismatch)
            {
                var mismatchResult = new PasswordResetResult
                {
                    Message = "Password and Confirm Password must match.",
                    Success = false
                };

                mismatchResult.AddFailingField(x => x.Password)
                .AddFailingField(x => x.ConfirmPassword);

                return(mismatchResult);
            }

            if (!_passwordService.PasswordIsStrong(model.Password))
            {
                return(PasswordResetResult.BadPassword);
            }

            var validateResetRequest = await _passwordService.ValidateRequest(model.Email, model.Marker);

            if (validateResetRequest.Success)
            {
                return(null);
            }

            return(validateResetRequest);
        }
    public PasswordResetResult PasswordReset(string ProvinceID, string SPID, string TimeStamp, string CustID, string UserAccount, string NewPassword, string OPType)
    {
        PasswordResetResult Result = new PasswordResetResult();
        Result.Result = ErrorDefinition.BT_IError_Result_UnknowError_Code;
        Result.CustID = CustID;
        Result.UserAccount = UserAccount;
        Result.ErrorDescription = "";
        Result.ProvinceID = "35";
        Result.ExtendField = "";
        Result.Result = CommonBizRules.CheckIPLimit(SPID, HttpContext.Current.Request.UserHostAddress, this.Context, out Result.ErrorDescription);
        if (Result.Result != 0)
        {
            return Result;
        }

        //接口访问权限判断
        Result.Result = CommonBizRules.CheckInterfaceLimit(SPID, "PasswordReset", this.Context, out Result.ErrorDescription);
        if (Result.Result != 0)
        {
            return Result;
        }
        try
        {
            if (CommonUtility.IsEmpty(ProvinceID))
            {

                Result.Result = ErrorDefinition.BT_IError_Result_InValidProvinceID_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidProvinceID_Msg + ",不能为空";
                return Result;
            }

            if (ProvinceID.Length != ConstDefinition.Length_ProvinceID)
            {
                Result.Result = ErrorDefinition.BT_IError_Result_InValidProvinceID_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidProvinceID_Msg + ",长度有误";
                return Result;
            }

            ProvinceInfoManager proObject = new ProvinceInfoManager();
            object proDataObject = proObject.GetProvinceData(this.Context);
            if (proObject.GetPropertyByProvinceID(ProvinceID, "ProvinceCode", proDataObject) == "")
            {
                Result.Result = ErrorDefinition.BT_IError_Result_InValidProvinceID_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidProvinceID_Msg + ",无效的省标识";
                return Result;
            }

            if (CommonUtility.IsEmpty(SPID))
            {

                Result.Result = ErrorDefinition.BT_IError_Result_InValidSPID_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidSPID_Msg + ",不能为空";
                return Result;
            }

            if (SPID.Length != ConstDefinition.Length_SPID)
            {
                Result.Result = ErrorDefinition.BT_IError_Result_InValidSPID_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidSPID_Msg + ",长度有误";
                return Result;
            }

            if (CommonUtility.IsEmpty(CustID))
            {

                Result.Result = ErrorDefinition.BT_IError_Result_InValidCustID_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidCustID_Msg + ",不能为空";
                return Result;
            }
            if (OPType != "0" & OPType != "1")
            {

                Result.Result = ErrorDefinition.IError_Result_InvalidRequestData_Code;
                Result.ErrorDescription = ErrorDefinition.IError_Result_InvalidRequestData_Msg + ",操作类型不对";
                return Result;
            }

            if (CommonUtility.IsEmpty(UserAccount))
            {

                Result.Result = ErrorDefinition.BT_IError_Result_InValidUserAccount_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidUserAccount_Msg + ",不能为空";
                return Result;
            }

            if (UserAccount.Length < ConstDefinition.Length_Min_UserAccount)
            {
                Result.Result = ErrorDefinition.BT_IError_Result_InValidUserAccount_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidUserAccount_Msg + ",长度有误";
                return Result;
            }
            if (UserAccount.Length > ConstDefinition.Length_Max_UserAccount)
            {
                Result.Result = ErrorDefinition.BT_IError_Result_InValidUserAccount_Code;
                Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidUserAccount_Msg + ",长度有误";
                return Result;
            }
            if (OPType == "0") //如果是修改密码则密码不能为空
            {
                if (CommonUtility.IsEmpty(NewPassword))
                {
                    Result.Result = ErrorDefinition.BT_IError_Result_InValidPassword_Code;
                    Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidPassword_Msg + ",不能为空";
                    return Result;
                }

                if (NewPassword.Length < ConstDefinition.Length_Min_Password)
                {
                    Result.Result = ErrorDefinition.BT_IError_Result_InValidPassword_Code;
                    Result.ErrorDescription = ErrorDefinition.BT_IError_Result_InValidPassword_Msg + ",密码必须大于6位";
                    return Result;
                }
            }

            //如果是密码重置则随即分配密码
            if (OPType == "1")
            {
                Random rd = new Random();

                NewPassword = rd.Next(111111, 999999).ToString();
            }

            string ContactTel = "";
            string Email = "";
            string RealName = "";
            Result.Result = BTBizRules.PasswordReset(SPID, CustID, UserAccount, NewPassword, out Result.ErrorDescription, out ContactTel, out Email, out RealName);

            StringBuilder msg = new StringBuilder();
            msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n");

            //如果是密码重置则发短信或发邮件通知用户
            if (OPType == "1")
            {
                msg.Append("客户信息平台密码重置短信接口测试准备调用 " + DateTime.Now.ToString("u") + "\r\n");
                msg.Append(ContactTel + "尊敬的" + RealName + "您好,您的密码已成功修改,您的卡号:" + UserAccount + "密码:" + NewPassword + ".请您牢记您的密码");
                msg.Append("\r\n");
                msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n");
                BTUCenterInterfaceLog.CenterForBizTourLog("PasswordReset", msg);

                CommonBizRules.SendMessage(ContactTel, "尊敬的" + RealName + "您好,您的密码已成功修改,您的卡号:" + UserAccount + "密码:" + NewPassword + ".请您牢记您的密码", "35000000");
            }
        }
        catch (Exception e)
        {
            Result.Result = ErrorDefinition.IError_Result_System_UnknowError_Code;
            Result.ErrorDescription = ErrorDefinition.IError_Result_System_UnknowError_Msg + e.Message;
        }
        finally
        {
            try
            {
                #region WriteLog
                StringBuilder msg = new StringBuilder();
                msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n\r\n");
                msg.Append("密码重置接口 " + DateTime.Now.ToString("u") + "\r\n");
                msg.Append("ProvinceID - " + ProvinceID);
                msg.Append(";SPID - " + SPID);
                msg.Append(";UserAccount - " + UserAccount);
                msg.Append(";CustID - " + CustID);
                msg.Append(";NewPassword - " + NewPassword);
                msg.Append(";OPType - " + OPType);
                msg.Append(";TimeStamp - " + TimeStamp + "\r\n");

                msg.Append("处理结果 - " + Result.Result);
                msg.Append("; 错误描述 - " + Result.ErrorDescription);
                msg.Append("; ProvinceID - " + Result.ProvinceID);
                msg.Append("; CustID - " + Result.CustID);
                msg.Append("; UserAccount - " + Result.UserAccount);
                msg.Append("; ExtendField - " + Result.ExtendField + "\r\n");

                msg.Append("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\r\n");

                BTUCenterInterfaceLog.CenterForBizTourLog("PasswordReset", msg);
                #endregion

                CommonBizRules.WriteDataLog(SPID, CustID, UserAccount, Result.Result,
                    Result.ErrorDescription, "", "PasswordReset");
            }
            catch { }
        }
        return Result;
    }