From b0eb50b4dd5feb31c83be4390d3444f56437c049 Mon Sep 17 00:00:00 2001 From: berlin-tzen Date: Wed, 11 Jan 2023 15:14:27 +0800 Subject: [PATCH] =?UTF-8?q?[WHAT]=20=E6=9C=83=E5=93=A1=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20API=20[WHY]=20ShowEasy=20=E5=BE=8C=E5=8F=B0=E9=96=8B?= =?UTF-8?q?=E7=99=BC=20[HOW]=20=E5=B0=87=E6=9C=83=E5=93=A1=E7=99=BB?= =?UTF-8?q?=E5=85=A5=E7=A7=BB=E8=87=B3=E6=9C=83=E5=93=A1=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EasyBL.WEBAPP/ShowEasy/MembersService.cs | 113 ++++++++++++++++++ .../WebApp/Controllers/MembersController.cs | 26 ++-- 2 files changed, 122 insertions(+), 17 deletions(-) diff --git a/EuroTran/EasyBL.WEBAPP/ShowEasy/MembersService.cs b/EuroTran/EasyBL.WEBAPP/ShowEasy/MembersService.cs index dacd422..352e02d 100644 --- a/EuroTran/EasyBL.WEBAPP/ShowEasy/MembersService.cs +++ b/EuroTran/EasyBL.WEBAPP/ShowEasy/MembersService.cs @@ -22,6 +22,119 @@ namespace EasyBL.WEBAPP.SYS public class MembersService : ServiceBase { + //會員登入 + public HttpResponseMessage Login(TestUser dto) + { + SuccessResponseMessage srm = null; + string sError = null; + var db = SugarBase.GetIntance(); + try + { + do + { + var sUserID = dto.Account; + var sPassword = dto.Password; + if (string.IsNullOrWhiteSpace(sUserID)) + { + sError = @"帳號不能為空"; //帳號不能為空 + break; + } + if (string.IsNullOrWhiteSpace(sPassword)) + { + sError = @"密碼不能為空"; //密碼不能為空 + break; + } + var sEncryptPwd = SecurityUtil.Encrypt(sPassword);//將輸入之密碼轉換驗證格式 + //string sPwd1 = SecurityUtil.Decrypt("wTBo6uXVBlVH8Ms76xiE4w=="); + //string sPwd1 = SecurityUtil.Decrypt("3EOyqH52VBUg3pj5Wy0rwQ=="); + var oUser = db.Queryable().Single(x => x.Account == sUserID && x.Password == sEncryptPwd); + + if (oUser == null) + { + sError = @"帳號或密碼不正確"; //帳號或密碼不正確 + break; + } + + if (oUser.Status != @"1") + { + sError = @"該帳號未啓用"; //該帳號無效 + break; + } + + 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().Single(x => x.OrgID == oUser.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); + srm = new SuccessResponseMessage(null, null); + srm.DATA.Add("authtoken", SecurityUtil.Encrypt(strtoken)); + } while (false); + } + catch (Exception ex) + { + sError = Util.GetLastExceptionMsg(ex); + } + finally + { + if (null != sError) + { + srm = new SuccessResponseMessage(null, null) + { + STATUSCODE = (int)StatusCodeEnum.Error, + MSG = sError + }; + } + } + + return HttpResponseExtension.ToJson(JsonConvert.SerializeObject(srm)); + } + //會員個人訊息查詢 public HttpResponseMessage GetMemberInfo(string OrgID, string Account) { diff --git a/EuroTran/WebApp/Controllers/MembersController.cs b/EuroTran/WebApp/Controllers/MembersController.cs index ffc225a..a03711d 100644 --- a/EuroTran/WebApp/Controllers/MembersController.cs +++ b/EuroTran/WebApp/Controllers/MembersController.cs @@ -15,23 +15,15 @@ namespace WebApp.Controllers { public class MembersController : ApiController { - - /// - /// 查詢會員個人信息 - /// - /// - /// - //[HttpGet] - //public HttpResponseMessage GetMemberInfo(string memberID) - //{ - // return new MembersService().GetMemberInfo(memberID); - //} - /// - /// 修改會員個人信息 - /// - /// - /// + [HttpPost] + //[SEApiSecurityFilter] + public HttpResponseMessage Login([FromBody] TestUser dto) + { + //登陸並返回token + return new MembersService().Login(dto); + } + [HttpPost] [SEApiSecurityFilter] public HttpResponseMessage Member([FromBody] MemberDTO Member) @@ -82,7 +74,7 @@ namespace WebApp.Controllers //重設密碼 [HttpPost] [SEApiSecurityFilter] - public HttpResponseMessage ResetNewPassword(string OrgID, string MemberID, string Password) + public HttpResponseMessage ResetNewPassword(string Password) { var SEToken = SETokenUtil.GetToken(this.Request);