コード例 #1
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            ApiResult result = new ApiResult();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Constants.API_BASE_URL);
                UserEmailInfo usernameEmail = userEmailModel.ToInfo();
                _logger.LogDebug("start post ResetPwd");
                using (var response = await client.PostAsJsonAsync <UserEmailInfo>("ResetPwd", usernameEmail))
                {
                    string apiResponse = await response.Content.ReadAsStringAsync();

                    result = JsonConvert.DeserializeObject <ApiResult>(apiResponse);
                    _logger.LogDebug("ResetPwd returned result" + apiResponse);
                    if (result.resultCode == ResultCode.SUCCESS)
                    {
                        HttpContext.Session.Set("_username", Encoding.ASCII.GetBytes(usernameEmail.UserName));
                        return(RedirectToPage("./VerifyCode"));
                    }
                }
            }
            ViewData["Error"] = result.errMsg;
            _logger.LogInformation(result.errMsg);
            return(Page());
        }
コード例 #2
0
        public ActionResult ResetPwd(UserEmailInfo usernameEmail)
        {
            this._logger.LogDebug("ResetPwd");
            ApiResult result = new ApiResult();

            if (IsRegistered(usernameEmail.UserName))
            {
                string emailAddr = GetEmailAddress(usernameEmail.UserName);
                usernameEmail.EmailAddr = emailAddr;
                if (SendVerifyCode(usernameEmail))
                {
                    result.resultCode = ResultCode.SUCCESS;
                    result.errMsg     = "Success";
                }
                else
                {
                    result.resultCode = ResultCode.SEND_EMAIL_FAILED;
                    result.errMsg     = "Sending verification code to the registered email address failed.";
                }
            }
            else
            {
                if (IsValidOracleUser(usernameEmail.UserName))
                {
                    result.resultCode = ResultCode.USER_NOT_REGISTERED;
                    result.errMsg     = "You have not yet registered for the Password Reset service. Please register now.";
                }
                else
                {
                    result.resultCode = ResultCode.INVALID_ORACLE_USERNAME;
                    result.errMsg     = "The entered Oracle username is invalid.";
                }
            }
            return(Ok(result));
        }
コード例 #3
0
        public UserEmailInfo ToInfo()
        {
            UserEmailInfo uei = new UserEmailInfo();

            uei.UserName  = this.UserName;
            uei.EmailAddr = this.EmailAddr;
            return(uei);
        }
コード例 #4
0
        private bool SendEmail(UserEmailInfo usernameEmail, string verifyCode, string expireTime)
        {
            string content = "Dear " + usernameEmail.UserName + ",<br/> " + "<p>Your Oracle password recovery verification code is "
                             + verifyCode
                             + " ."
                             + " Please note that this recovery code will expire at "
                             + expireTime
                             + "(5 minutes from your reset request).</p>";

            return(EmailUtil.SendEmail(usernameEmail.EmailAddr, content));
        }
コード例 #5
0
        private bool SendEmail(UserEmailInfo usernameEmail, string verifyCode, string expireTime)
        {
            string content = "Dear " + usernameEmail.UserName + ",<br/> " + "<p>Your Oracle password recovery verification code is "
                             + verifyCode
                             + " ."
                             + " Please note that this recovery code will expire at "
                             + expireTime
                             + "(5 minutes from your reset request).</p><br/><br/>"
                             + "Sierra System";

            EmailUtil.SendEmailWithGoogle(usernameEmail.EmailAddr, content);
            //EmailUtil.SendEmailAsyncWithSendGrid(usernameEmail.EmailAddr, content);
            return(true);
        }
コード例 #6
0
 public bool IsEmailValid(UserEmailInfo userInfo)
 {
     try
     {
         bool result       = false;
         var  dbConnection = this.GetConnection();
         if (dbConnection.State == System.Data.ConnectionState.Closed)
         {
             dbConnection.Open();
             _logger.LogInformation("oracle connection opened.");
         }
         if (dbConnection.State == System.Data.ConnectionState.Open)
         {
             using (OracleCommand cmd = dbConnection.CreateCommand())
             {
                 try
                 {
                     cmd.CommandText = @"SELECT * FROM oracle_pwd_reset_users WHERE username=:username and emailaddr=:email";
                     OracleParameter[] parameters = new OracleParameter[] {
                         new OracleParameter("username", userInfo.UserName),
                         new OracleParameter("email", userInfo.EmailAddr)
                     };
                     cmd.Parameters.AddRange(parameters);
                     OracleDataReader reader = cmd.ExecuteReader();
                     while (reader.Read())
                     {
                         result = true;
                         break;
                     }
                     reader.Dispose();
                     dbConnection.Close();
                     _logger.LogInformation("oracle connection closed.");
                 }
                 catch (Exception ex)
                 {
                     _logger.LogError(ex, ex.Message, null);
                     return(false);
                 }
             }
         }
         return(result);
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, ex.Message, null);
         return(false);
     }
 }
コード例 #7
0
        private bool SendVerifyCode(UserEmailInfo usernameEmail)
        {
            string   verifyCode  = RandomString.GenerateRandomString(8);
            DateTime expiredTime = DateTime.Now.AddMinutes(Constants.VERIFY_CODE_VALID_MINS);
            bool     result      = SendEmail(usernameEmail, verifyCode, expiredTime.ToString());

            if (result)
            {
                UserResetPwdInfo urpi = new UserResetPwdInfo();
                urpi.UserName              = usernameEmail.UserName;
                urpi.EmailAddr             = usernameEmail.EmailAddr;
                urpi.VerificationCode      = verifyCode;
                urpi.VerifyCodeExpiredTime = expiredTime.ToString();
                _oracleUserRepo.AddVerificationInfo(urpi);
            }
            return(result);
        }
コード例 #8
0
 public UserEmailInfo QueryEmailByUserId(string userId)
 {
     using (var manager = new BettingPointManager())
     {
         UserEmailInfo info   = new UserEmailInfo();
         var           entity = manager.GetUserEmail(userId);
         if (entity == null)
         {
             return(info);
         }
         info.AuthFrom      = entity.AuthFrom;
         info.CreateBy      = entity.CreateBy;
         info.CreateTime    = entity.CreateTime;
         info.Email         = entity.Email;
         info.IsSettedEmail = entity.IsSettedEmail;
         info.RequestTimes  = entity.RequestTimes;
         info.UserId        = entity.UserId;
         return(info);
     }
 }
コード例 #9
0
 private bool IsEmailValid(UserEmailInfo usernameEmail)
 {
     return(_oracleUserRepo.IsEmailValid(usernameEmail));
 }