|
|
@ -29,8 +29,8 @@ namespace EasyBL.WEBAPP.SYS |
|
|
|
//public static string SERVER_IP = "www.origtek.com";
|
|
|
|
//public static string SERVER_PORT = "9105";
|
|
|
|
|
|
|
|
//使用者以信箱註冊
|
|
|
|
public HttpResponseMessage SignupWithEmail(SETB_CMS_Member newUser) |
|
|
|
//使用者以信箱註冊(連結)
|
|
|
|
public HttpResponseMessage SignupWithEmail_Link(SETB_CMS_Member newUser) |
|
|
|
{ |
|
|
|
//string sMsg = null;
|
|
|
|
SuccessResponseMessage srm = null; |
|
|
@ -118,6 +118,116 @@ namespace EasyBL.WEBAPP.SYS |
|
|
|
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); |
|
|
|
} |
|
|
|
|
|
|
|
//使用者以信箱註冊(認證碼)
|
|
|
|
public HttpResponseMessage SignupWithEmail(SETB_CMS_Member newUser) |
|
|
|
{ |
|
|
|
//string sMsg = null;
|
|
|
|
SuccessResponseMessage srm = null; |
|
|
|
var db = SugarBase.GetIntance(); |
|
|
|
string sError = null; |
|
|
|
|
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
do |
|
|
|
{ |
|
|
|
string sAccount = newUser.Email; |
|
|
|
string sPassword = newUser.Password; |
|
|
|
string sEmail = newUser.Email; |
|
|
|
string sFirstName = newUser.FirstName; |
|
|
|
string sLastName = newUser.LastName; |
|
|
|
//string sSubscribe = newUser.Subscribe;
|
|
|
|
string sMemberID = Guid.NewGuid().ToString(); //會員編號為GUID
|
|
|
|
string sOrgID = "TG"; //公司編號預設為TG
|
|
|
|
string sStatus = "0"; //會員狀態為未驗證(F)
|
|
|
|
string sType = "Email"; |
|
|
|
var rand = new Random(); //認證碼(隨機產生)
|
|
|
|
var sVerifyCode = new char[5]; //只要6碼
|
|
|
|
//var NumString = "0123456789"; //從這串裡面取值(只要數字)
|
|
|
|
|
|
|
|
//for(int i = 0; i < sVerifyCode.Length; i++)
|
|
|
|
//{
|
|
|
|
// sVerifyCode[i] = NumString[rand.Next(NumString.Length)];
|
|
|
|
//}
|
|
|
|
|
|
|
|
//var testCode = new String(sVerifyCode);
|
|
|
|
//System.Diagnostics.Debug.WriteLine("sVerifyCode: " + sVerifyCode);
|
|
|
|
|
|
|
|
var checkAccount = db.Queryable<SETB_CMS_Member>() |
|
|
|
.Where(x => x.OrgID == sOrgID && x.Account == sAccount) |
|
|
|
.Count(); |
|
|
|
|
|
|
|
if (checkAccount > 0) |
|
|
|
{ |
|
|
|
|
|
|
|
sError = @"該帳號已註冊"; //該帳號無效
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
string sEncryptPwd = SecurityUtil.Encrypt(sPassword); //密碼加密
|
|
|
|
newUser.MemberID = sMemberID; |
|
|
|
newUser.OrgID = sOrgID; |
|
|
|
newUser.Status = sStatus; |
|
|
|
newUser.Password = sEncryptPwd; |
|
|
|
newUser.Account = newUser.Email; |
|
|
|
newUser.MemberType = sType; |
|
|
|
newUser.VerifyCode = "123456"; //認證碼
|
|
|
|
|
|
|
|
var iExpireTime = 5; //(單位為小時,預設5分鐘到期) 1 Days = 24 hrs
|
|
|
|
var sExpireTime = Common.GetSystemSetting(db, sOrgID, @"VerifyCodeExpireTime"); |
|
|
|
if (!string.IsNullOrEmpty(sExpireTime)) |
|
|
|
{ |
|
|
|
iExpireTime = int.Parse(sExpireTime); |
|
|
|
} |
|
|
|
newUser.ExpireTime = DateTime.Now.AddMinutes(iExpireTime); |
|
|
|
|
|
|
|
var iRel = db.Insertable(newUser).ExecuteCommand(); |
|
|
|
|
|
|
|
//開始寄信
|
|
|
|
var oEmail = new Emails(); //寄件人
|
|
|
|
var toEmail = new List<EmailTo>(); //收件人
|
|
|
|
var oEmailTo = new EmailTo //收件人資訊
|
|
|
|
{ |
|
|
|
ToUserID = newUser.MemberID, |
|
|
|
ToUserName = newUser.LastName, |
|
|
|
ToEmail = newUser.Email, |
|
|
|
Type = "to" |
|
|
|
}; |
|
|
|
toEmail.Add(oEmailTo); |
|
|
|
oEmail.FromUserName = " ShowEasy 簡單平台股份有限公司"; |
|
|
|
oEmail.FromEmail = "No-Reply@showeasy.com"; |
|
|
|
oEmail.FromUserName = "【ShowEasy 會員認證】"; //取fonfig
|
|
|
|
oEmail.Title = "感謝您註冊ShowEasy"; //取fonfig
|
|
|
|
oEmail.EmailBody = VerifyAccountWithCode_Mail(newUser.FirstName, newUser.VerifyCode); |
|
|
|
oEmail.IsCCSelf = false; |
|
|
|
oEmail.Attachments = null; |
|
|
|
oEmail.EmailTo = toEmail; |
|
|
|
var bSend = new MailService(sOrgID, true).MailFactory(oEmail, out sError); |
|
|
|
|
|
|
|
srm = new SuccessResponseMessage(null, null); |
|
|
|
srm.DATA.Add(BLWording.REL, newUser); |
|
|
|
} while (false); |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
sError = Util.GetLastExceptionMsg(ex); |
|
|
|
} |
|
|
|
finally |
|
|
|
{ |
|
|
|
if (null != sError) |
|
|
|
{ |
|
|
|
srm = new SuccessResponseMessage(null, null) |
|
|
|
{ |
|
|
|
STATUSCODE = (int)StatusCodeEnum.ParameterError, |
|
|
|
MSG = sError |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); |
|
|
|
} |
|
|
|
|
|
|
|
//重新寄送認證信
|
|
|
|
public HttpResponseMessage ReSendVerifyMail(string Email) |
|
|
|
{ |
|
|
@ -143,7 +253,7 @@ namespace EasyBL.WEBAPP.SYS |
|
|
|
toEmail.Add(oEmailTo); |
|
|
|
oEmail.FromUserName = "【ShowEasy 會員認證】"; //取fonfig
|
|
|
|
oEmail.Title = "感謝您註冊ShowEasy"; //取fonfig
|
|
|
|
oEmail.EmailBody = VerifyAccount_Mail(Mailto.OrgID, Mailto.MemberID, Mailto.FirstName); |
|
|
|
oEmail.EmailBody = VerifyAccountWithCode_Mail(Mailto.FirstName, Mailto.VerifyCode); |
|
|
|
oEmail.IsCCSelf = false; |
|
|
|
oEmail.Attachments = null; |
|
|
|
oEmail.EmailTo = toEmail; |
|
|
@ -164,8 +274,8 @@ namespace EasyBL.WEBAPP.SYS |
|
|
|
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); |
|
|
|
} |
|
|
|
|
|
|
|
//會員認證
|
|
|
|
public HttpResponseMessage VerifyAccount(string OrgID, string MemberID) |
|
|
|
//會員認證(連結)
|
|
|
|
public HttpResponseMessage VerifyAccount_Link(string OrgID, string MemberID) |
|
|
|
{ |
|
|
|
//string sMsg = null;
|
|
|
|
SuccessResponseMessage srm = SugarBase.ExecTran(db => |
|
|
@ -262,7 +372,145 @@ namespace EasyBL.WEBAPP.SYS |
|
|
|
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); |
|
|
|
} |
|
|
|
|
|
|
|
//Verify Account Mail Template
|
|
|
|
//會員認證(認證碼)
|
|
|
|
public HttpResponseMessage VerifyAccount(string OrgID, string MemberID, string Code) |
|
|
|
{ |
|
|
|
|
|
|
|
SuccessResponseMessage srm = null; |
|
|
|
string sError = null; |
|
|
|
var db = SugarBase.GetIntance(); |
|
|
|
int errorStaus = 500; |
|
|
|
try |
|
|
|
{ |
|
|
|
do |
|
|
|
{ |
|
|
|
|
|
|
|
var oUser = db.Queryable<SETB_CMS_Member>().Single(x => x.OrgID == OrgID && x.MemberID == MemberID); |
|
|
|
|
|
|
|
var RightNow = DateTime.Now; //取當下時間
|
|
|
|
var Time = RightNow - oUser.ExpireTime; |
|
|
|
|
|
|
|
TimeSpan Timec = (TimeSpan)(RightNow - oUser.ExpireTime); |
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(Code)) |
|
|
|
{ |
|
|
|
if (Code == oUser.VerifyCode) |
|
|
|
{ |
|
|
|
oUser.Status = "1"; //註冊成功
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
sError = @"驗證碼輸入錯誤"; //驗證碼輸入錯誤
|
|
|
|
errorStaus = (int)StatusCodeEnum.Error; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
var iRel = db.Updateable(oUser).ExecuteCommand(); |
|
|
|
//注冊成功后默認登錄
|
|
|
|
var ticket = new OTB_SYS_TicketAuth |
|
|
|
{ |
|
|
|
OrgID = oUser.OrgID, |
|
|
|
UserID = oUser.Account, |
|
|
|
UserName = oUser.FirstName, |
|
|
|
Token = SignExtension.CreateToken(), |
|
|
|
// LoginIp = i_crm.ClientIP,
|
|
|
|
LoginTime = DateTime.Now |
|
|
|
}; |
|
|
|
var iExpireTime = 240; |
|
|
|
var sExpireTime = Common.GetSystemSetting(db, oUser.OrgID, @"ExpireTime"); |
|
|
|
if (!string.IsNullOrEmpty(sExpireTime)) |
|
|
|
{ |
|
|
|
iExpireTime = int.Parse(sExpireTime); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
iExpireTime = int.Parse(Common.GetAppSettings(@"ExpireTime")); |
|
|
|
} |
|
|
|
ticket.ExpireTime = DateTime.Now.AddMinutes(iExpireTime); //30分钟过期
|
|
|
|
ticket.IsVerify = @"Y"; |
|
|
|
var oTicket = db.Queryable<OTB_SYS_TicketAuth>().Single(x => x.OrgID == OrgID && x.UserID == oUser.Account); |
|
|
|
if (oTicket != null) |
|
|
|
{ |
|
|
|
db.Updateable(ticket).IgnoreColumns(x => x.OutlookId).Where(x => x.NO == oTicket.NO).ExecuteCommand(); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
ticket.CreateTime = DateTime.Now; |
|
|
|
db.Insertable(ticket).ExecuteCommand(); |
|
|
|
} |
|
|
|
//記錄log日誌
|
|
|
|
db.Insertable(new OTB_SYS_LoginLog |
|
|
|
{ |
|
|
|
OrgId = ticket.OrgID, |
|
|
|
UserId = ticket.UserID, |
|
|
|
UserName = ticket.UserName, |
|
|
|
LoginIp = ticket.LoginIp, |
|
|
|
LoginTime = ticket.LoginTime |
|
|
|
}).ExecuteCommand(); |
|
|
|
HttpRuntimeCache.Set(ticket.OrgID + ticket.UserID, ticket, iExpireTime * 60, true); |
|
|
|
HttpContext.Current.Session.Add(@"orgid", ticket.OrgID); |
|
|
|
HttpContext.Current.Session.Add(@"userid", ticket.UserID); |
|
|
|
HttpCookie cookie = new HttpCookie("EURO_COOKIE"); //初始化並設置Cookie的名稱
|
|
|
|
DateTime dt = DateTime.Now; |
|
|
|
TimeSpan ts = new TimeSpan(0, 0, 1, 0, 0); //過期時間為1分鐘
|
|
|
|
cookie.Expires = dt.Add(ts); //設置過期時間
|
|
|
|
cookie.Values.Add("orgid", ticket.OrgID); |
|
|
|
cookie.Values.Add("userid", ticket.UserID); |
|
|
|
HttpContext.Current.Response.AppendCookie(cookie); |
|
|
|
|
|
|
|
var strtoken = string.Format(@"orgid:{0},userid:{1},token:{2}", ticket.OrgID, ticket.UserID, ticket.Token); |
|
|
|
|
|
|
|
//開始寄信
|
|
|
|
var sOrgID = oUser.OrgID; |
|
|
|
|
|
|
|
var oEmail = new Emails(); //寄件人
|
|
|
|
var toEmail = new List<EmailTo>(); //收件人
|
|
|
|
var oEmailTo = new EmailTo //收件人資訊
|
|
|
|
{ |
|
|
|
ToUserID = oUser.MemberID, |
|
|
|
ToUserName = oUser.LastName, |
|
|
|
ToEmail = oUser.Email, |
|
|
|
Type = "to" |
|
|
|
}; |
|
|
|
toEmail.Add(oEmailTo); |
|
|
|
oEmail.FromUserName = "【ShowEasy 認證成功】"; //取fonfig
|
|
|
|
oEmail.Title = "歡迎加入ShowEasy🧡"; //取fonfig
|
|
|
|
oEmail.EmailBody = CompleteRegistration_Mail(oUser.FirstName); |
|
|
|
oEmail.IsCCSelf = false; |
|
|
|
oEmail.Attachments = null; |
|
|
|
oEmail.EmailTo = toEmail; |
|
|
|
var bSend = new MailService(sOrgID, true).MailFactory(oEmail, out sError); |
|
|
|
|
|
|
|
srm = new SuccessResponseMessage(null, null); |
|
|
|
srm.DATA.Add("authtoken", SecurityUtil.Encrypt(strtoken)); |
|
|
|
|
|
|
|
|
|
|
|
} while (false); |
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
sError = Util.GetLastExceptionMsg(ex); |
|
|
|
System.Diagnostics.Debug.WriteLine(sError); |
|
|
|
} |
|
|
|
finally |
|
|
|
{ |
|
|
|
if (null != sError) |
|
|
|
{ |
|
|
|
srm = new SuccessResponseMessage(null, null) |
|
|
|
{ |
|
|
|
STATUSCODE = errorStaus, |
|
|
|
MSG = sError |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//Verify Account Mail Template(連結)
|
|
|
|
private string VerifyAccount_Mail(string OrgID, string MemberID, string FirstName) |
|
|
|
{ |
|
|
|
|
|
|
@ -361,6 +609,84 @@ namespace EasyBL.WEBAPP.SYS |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//Verify Account Mail Template(認證碼)
|
|
|
|
private string VerifyAccountWithCode_Mail(string FirstName, string Code) |
|
|
|
{ |
|
|
|
|
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
|
|
|
|
EmailTemplate_CH mailTemplate = new EmailTemplate_CH(); |
|
|
|
var Server = Common.ConfigGetValue("", "ida:RedirectUri"); |
|
|
|
|
|
|
|
sb.Append(mailTemplate.MailHeader()); |
|
|
|
sb.Append(mailTemplate.MailCSS()); |
|
|
|
sb.Append(mailTemplate.MailShowEasyLogo()); |
|
|
|
//Email Body
|
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td style = \"padding: 0 50px 0 50px; background-color: #f8f8f8\" class=\"sm-p bar\">"); |
|
|
|
sb.Append("<table border=\"0\" cellspacing=\"0\" role=\"presentation\" style=\"width: 100%\">"); |
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td>"); |
|
|
|
sb.Append("<table border = \"0\" cellpadding = \"0\" cellspacing = \"0\" role = \"presentation\" align = \"center\"> "); |
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td bgcolor = \"#FEFEFE\" width = \"440\" style = \"display: block; padding-top: 30px; padding-left: 20px; padding-right: 0; font-family: arial, sans-serif; color: #000000; text-align: left;\"> "); |
|
|
|
sb.Append("<img class=\"confirm-img\" style = \"display: block\" src = \"https://d3kpqi6h465b7i.cloudfront.net/email/verifyAccount.png \" width = \"50\" height = \"50\"/> "); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
//Text:VerifyYourAccount
|
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td bgcolor = \"#FEFEFE\" width = \"440\" style = \"display: block;padding-top: 10px;padding-left: 20px;padding-right: 0;font-family: arial, sans-serif;color: #000000;text-align: left\";>"); |
|
|
|
sb.Append("<h1 class=\"title1\" style = \"font-family: 'arial', 'sans-serif'; font-weight: 700; font-size: 24px; line-height: 18px; color: #000000; margin: 0 0 0 0;\">"); |
|
|
|
sb.Append("EMAIL認證信"); |
|
|
|
sb.Append("</h1>"); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
//Text:Hi,xxx
|
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td bgcolor = \"#FEFEFE\" width = \"440\" style = \"display: block;padding-top: 35px;padding-left: 20px;padding-right: 0;font-family: arial, sans-serif;color: #000000;text-align: left;\">"); |
|
|
|
sb.Append("<h1 class=\"title1\" style = \"font-family: 'arial', 'sans-serif';font-weight: 700;font-size: 20px;line-height: 20px;color: #000000;margin: 0 0 0 0;\">"); |
|
|
|
sb.Append("您好 " + FirstName + ","); |
|
|
|
sb.Append("</h1>"); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
//Text:Welcome to....
|
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td bgcolor = \"#FEFEFE\" width = \"440\" width = \"440px\" style = \"display: block;padding-top: 20px;padding-left: 20px;padding-right: 0;color: #9c9c9c;text-align: left;\">"); |
|
|
|
sb.Append("<p style = \"font-weight: 400;font-size: 16px;line-height: 18px;letter-spacing: 0.02em;font-family: 'arial', 'sans-serif';margin: 0 0 0px;\" class=\"has-markdown\">"); |
|
|
|
sb.Append("歡迎您加入ShowEasy成為會員!<br />"); |
|
|
|
sb.Append("請使用下方的<span style=\"color: #f48800;\">認證碼</span>完成註冊並啟用您的帳戶<br />"); |
|
|
|
sb.Append("<br />"); |
|
|
|
sb.Append("提醒您,下方認證碼將於30分鐘後失效<br />"); |
|
|
|
//sb.Append("in 30 minutes.");
|
|
|
|
sb.Append("</p>"); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
//Button:Verify my account
|
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td bgcolor = \"#FEFEFE\" style = \"display: block;padding-top: 35px;padding-bottom: 80px;font-family: arial, sans-serif;color: #232323;text-align: left;width: 460px;\"> "); |
|
|
|
sb.Append("<table align = \"center\" border = \"0\" cellspacing = \"0\" role = \"presentation\">"); |
|
|
|
sb.Append("<tr>"); |
|
|
|
sb.Append("<td class=\"s-btn s-btn__primary\" style=\"border-radius: 16px; background: #f1f1f1;width: 440px;height: 40px;text-align: center;font-weight: bold;font-size: 30px;\">"); |
|
|
|
sb.Append(Code); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
sb.Append("</table>"); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
sb.Append("</table>"); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
sb.Append("</table>"); |
|
|
|
sb.Append("</td>"); |
|
|
|
sb.Append("</tr>"); |
|
|
|
//sb.Append(mailTemplate.MailButtom());
|
|
|
|
sb.Append(mailTemplate.MailFooter()); |
|
|
|
|
|
|
|
return sb.ToString(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//寄送忘記密碼信
|
|
|
|
public HttpResponseMessage SendForgotMail(string Email) |
|
|
|
{ |
|
|
|