/// <summary> /// 重設密碼 - 根據使用者token /// </summary> /// <param name="token"></param> /// <param name="code"></param> /// <param name="checkCode"></param> /// <param name="reSetPassWord"></param> /// <returns></returns> public bool DoByToken(string token, string oldPassWord, string reSetPassWord) { var appKey = ConfigurationManager.AppSettings["AppLoginKey"].ToString(); var db = _uow.DbContext; var memberInfo = (from m in db.Members join us in db.UserToken on m.Id equals us.MemberId where us.Token.ToLower() == token.ToLower() select m).FirstOrDefault(); if (memberInfo == null) { return(false); } var encryptionService = new Utility.Encryption(); oldPassWord = encryptionService.DecryptString(oldPassWord, appKey).ToLower(); reSetPassWord = encryptionService.DecryptString(reSetPassWord, appKey).ToLower(); var oldPassWordEncode = encryptionService.StringToSHA256(string.Format("{0}{1}", oldPassWord, memberInfo.Account.ToLower())); if (memberInfo.PassWord.ToString() != oldPassWordEncode.ToString()) { return(false); } //設定新密碼 var newPassWord = encryptionService.StringToSHA256(string.Format("{0}{1}", reSetPassWord, memberInfo.Account.ToLower())); memberInfo.PassWord = newPassWord; db.SaveChanges(); var mailService = new MailService(); var emailDomain = ConfigurationManager.AppSettings["MailDomain"].ToString(); var emailAdminAddress = ConfigurationManager.AppSettings["MailAdminAddress"].ToString(); var emailSMTPPort = Convert.ToInt32(ConfigurationManager.AppSettings["MailSMTPPort"].ToString()); //收信者 var recipient = new List <string>() { memberInfo.Email }; var msg = string.Format("{0}您好!!您修改後的密碼是{1}", memberInfo.Name, reSetPassWord); var sendMail = mailService.SendMail(emailDomain, emailSMTPPort, emailAdminAddress, recipient, msg, "Flipus重設密碼", null).Result; return(true); }
public WebRequest PostForm() { //save form in SQL so parent window can authenticate WebRequest wr = new WebRequest(); if (Form.ContainsKey("email") == false) { return(wr); } if (Form.ContainsKey("password") == false) { return(wr); } SetupWebRequest(); Utility.Encryption crypt = new Utility.Encryption(R); string email = Form["email"]; string pass = Form["password"]; string salt = crypt.GetMD5Hash(email + "?" + pass); string loginid = R.Util.Str.CreateID(); string host; if (R.isLocal == true) { host = "http://" + R.Page.Url.host; } else { host = "https://" + R.Page.Url.host; } //IHttpConnectionFeature ip = R.Context.GetFeature<IHttpConnectionFeature>(); R.Page.SqlPage.SaveLoginForAuth(salt, email, loginid); scaffold.Data["script"] += "setTimeout(function(){parent.postMessage(\"login|" + loginid + "\",\"" + host + "\");},10);"; //finally, scaffold login HTML scaffold.Data["body"] = "<div style=\"text-align:center; width:100%; padding-top:10px;\">Processing login...</div>"; wr.html = scaffold.Render(); return(wr); }
/// <summary> /// 重設密碼 - 根據email /// </summary> /// <param name="code">client所輸入的驗證碼</param> /// <param name="checkCode">系統所產生的驗證碼</param> /// <param name="email">client所輸入的驗證信箱</param> /// <returns></returns> public bool Do(string code, string checkCode, string email) { var memberService = new MemberService(); var checkeMail = _uow.MembersRepo.GetFirst(t => t.Email == email); //驗證該信箱是否註冊過 if (checkeMail == null) { return(false); } //驗證碼是否輸入正確 if (code.ToLower() != checkCode.ToLower()) { return(false); } var captchaHelper = new Utility.CaptchaHelper(); var randomPwd = captchaHelper.GenerateRandomText(10).ToLower(); var encryptionService = new Utility.Encryption(); //設定新密碼 var newPassWord = encryptionService.StringToSHA256(string.Format("{0}{1}", randomPwd, checkeMail.Account)); checkeMail.PassWord = newPassWord; _uow.SaveChanges(); var mailService = new MailService(); var emailDomain = ConfigurationManager.AppSettings["MailDomain"].ToString(); var emailAdminAddress = ConfigurationManager.AppSettings["MailAdminAddress"].ToString(); var emailSMTPPort = Convert.ToInt32(ConfigurationManager.AppSettings["MailSMTPPort"].ToString()); //收信者 var recipient = new List <string>() { email }; var msg = string.Format("{0}您好!!您的密碼是{1}", checkeMail.Name, randomPwd); var sendMail = mailService.SendMail(emailDomain, emailSMTPPort, emailAdminAddress, recipient, msg, "Locus重設密碼", null).Result; return(sendMail); }
public WebRequest PostForm() { //save form in SQL so parent window can authenticate WebRequest wr = new WebRequest(); if(Form.ContainsKey("email") == false) { return wr; } if (Form.ContainsKey("password") == false) { return wr; } SetupWebRequest(); Utility.Encryption crypt = new Utility.Encryption(R); string email = Form["email"]; string pass = Form["password"]; string salt = crypt.GetMD5Hash(email + "?" + pass); string loginid = R.Util.Str.CreateID(); string host; if(R.isLocal == true) { host = "http://" + R.Page.Url.host; }else { host = "https://" + R.Page.Url.host; } //IHttpConnectionFeature ip = R.Context.GetFeature<IHttpConnectionFeature>(); R.Page.SqlPage.SaveLoginForAuth(salt, email, loginid); scaffold.Data["script"] += "setTimeout(function(){parent.postMessage(\"login|" + loginid + "\",\"" + host + "\");},10);"; //finally, scaffold login HTML scaffold.Data["body"] = "<div style=\"text-align:center; width:100%; padding-top:10px;\">Processing login...</div>"; wr.html = scaffold.Render(); return wr; }