public void AccountValidTest1() { #region arrange (驗證帳號失敗) // 輸入的帳號 AccountInfoData accountID = new AccountInfoData() { UserId = 1, AccountName = "kevan", Password = "******", UserName = "******" }; ExecuteResult reExcuteResult = new ExecuteResult() { IsSuccessed = false, Message = "該帳號不存在。" }; _loginBO.Stub(o => o.AccountValid(Arg <AccountInfoData> .Is.Anything)).Return(reExcuteResult); #endregion #region act var result = _target.AccountValid(accountID); #endregion #region assert Assert.AreEqual(result.Message, reExcuteResult.Message); #endregion }
public void AccountValidTest1() { #region arrange (驗證帳號失敗) // 輸入的帳號 AccountInfoData accountID = new AccountInfoData() { UserId = 1, AccountName = "kevan", Password = "******", UserName = "******" }; List <UserDTO> reUserDTOList = new List <UserDTO>() { }; string reMessage = "該帳號不存在。"; _userEfRepo.Stub(o => o.FindAccountName(Arg <string> .Is.Anything)).Return(reUserDTOList); #endregion #region act var result = _target.AccountValid(accountID); #endregion #region assert Assert.AreEqual(result.Message, reMessage); #endregion }
public void GetUserDataByAccountNameTest() { #region arrange AccountInfoData accountID = new AccountInfoData() { UserId = 1, AccountName = "kevan", Password = "******", UserName = "******" }; UserDTO reUserDTO = new UserDTO() { UserID = 1, AccountName = "kevan", Password = "******", UserName = "******", Email = "*****@*****.**" }; _loginBO.Stub(o => o.GetUserDataByAccountName(Arg <AccountInfoData> .Is.Anything)).Return(reUserDTO); #endregion #region act var result = _target.GetUserDataByAccountName(accountID); #endregion #region assert Assert.AreEqual(result.UserID, reUserDTO.UserID); Assert.AreEqual(result.AccountName, reUserDTO.AccountName); Assert.AreEqual(result.Password, reUserDTO.Password); Assert.AreEqual(result.UserName, reUserDTO.UserName); Assert.AreEqual(result.Email, reUserDTO.Email); #endregion }
/// <summary> /// 驗證登入帳號密碼 /// </summary> /// <param name="accountInfoData"></param> /// <returns></returns> public ExecuteResult AccountValid(AccountInfoData accountInfoData) { ExecuteResult result = new ExecuteResult(); try { result.IsSuccessed = _userEfRepo.FindAccountName(accountInfoData.AccountName).Any(); //驗證帳號 if (!result.IsSuccessed) { result.Message = "該帳號不存在。"; return(result); } string key = ConfigurationManager.AppSettings["EncryptKey"] == null ? "1qaz@WSX" : ConfigurationManager.AppSettings["EncryptKey"]; accountInfoData.Password = AESEncryptHelper.AESEncryptBase64(accountInfoData.Password, key); result.IsSuccessed = _userEfRepo.FindAccountData(accountInfoData.AccountName).Password == accountInfoData.Password; //驗證密碼 if (!result.IsSuccessed) { result.Message = "密碼輸入錯誤。"; } } catch (Exception ex) { result.IsSuccessed = false; result.Message = ex.Message; } return(result); }
public ActionResult Login(AccountInfoData accountInfoData) { ExecuteResult result = new ExecuteResult(); if (!ModelState.IsValid) { CurrentHttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; accountInfoData.Message = "請填寫必填欄位"; return(View(accountInfoData)); } else { result = _loginService.AccountValid(accountInfoData); if (!result.IsSuccessed) { CurrentHttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; accountInfoData.Message = result.Message; return(View(accountInfoData)); } else { UserDTO user = _loginService.GetUserDataByAccountName(accountInfoData); SecurityLevel securityLevel = new SecurityLevel(); AccountInfoData userInfoData = new AccountInfoData() { UserId = user.UserID, AccountName = accountInfoData.AccountName }; securityLevel.UserData = userInfoData; securityLevel.SecurityRole = _loginService.GetRoleDataByUserID(user.UserID.ToString()).ToList(); securityLevel.SecurityUrl.AddRange(_securityService.GetSecurityRoleFunction(securityLevel.UserData.UserId.ToString())); CurrentSecurityLevel = securityLevel; CurrentHttpContext.Session["UserName"] = user.UserName; CurrentHttpContext.Session["UserID"] = user.UserID; CurrentHttpContext.Session["AccountName"] = user.AccountName; // UnitTest用 //if (HttpContext == null) //{ // CurrentHttpContext.Session[AccountInfoData.LoginInfo] = securityLevel; // CurrentHttpContext.Session["UserName"] = user.UserName; //} //else //{ // SessionConnectionPool.SetCurrentUserInfo(securityLevel); // Session["UserName"] = user.UserName; //} return(RedirectToAction("Index", "Home")); } } }
/// <summary> /// 刷新權限Sesstion /// </summary> public void SessionReflash() { SecurityLevel securityLevel = new SecurityLevel(); AccountInfoData userInfoData = new AccountInfoData() { UserId = Convert.ToInt32(CurrentHttpContext.Session["UserID"]), AccountName = CurrentHttpContext.Session["AccountName"].ToString() }; securityLevel.UserData = userInfoData; securityLevel.SecurityRole = _loginService.GetRoleDataByUserID(CurrentHttpContext.Session["UserID"].ToString()).ToList(); securityLevel.SecurityUrl.AddRange(_securityService.GetSecurityRoleFunction(securityLevel.UserData.UserId.ToString())); CurrentSecurityLevel = securityLevel; }
public ActionResult Login(AccountInfoData accountInfoData) { ExecuteResult result = new ExecuteResult(); if (!ModelState.IsValid) { Response.StatusCode = (int)HttpStatusCode.BadRequest; result.IsSuccessed = false; result.Message = "請填寫必填欄位"; return(Json(result, JsonRequestBehavior.AllowGet)); } else { result = _loginService.AccountValid(accountInfoData); if (!result.IsSuccessed) { Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(result, JsonRequestBehavior.AllowGet)); } else { UserDTO user = _loginService.GetUserDataByAccountName(accountInfoData); SecurityLevel securityLevel = new SecurityLevel(); AccountInfoData userInfoData = new AccountInfoData() { UserId = user.UserID, AccountName = accountInfoData.AccountName, UserName = accountInfoData.UserName }; securityLevel.UserData = userInfoData; securityLevel.SecurityRole = _loginService.GetRoleDataByUserID(user.UserID.ToString()).ToList(); foreach (var item in securityLevel.SecurityRole) { securityLevel.SecurityUrl.AddRange(_securityService.GetSecurityRoleFunction(item.RoleID.ToString())); } SessionConnectionPool.SetCurrentUserInfo(securityLevel); Session["UserName"] = user.UserName; Response.StatusCode = (int)HttpStatusCode.OK; return(Json(securityLevel, JsonRequestBehavior.AllowGet)); //return Redirect("http://localhost:4200/"); } } }
public void LoginTest2() { #region arrange (登入失敗) // httpContext物件設定 var httpContext = FakeHttpContextManager.CreateHttpContextBase(); httpContext.Response.StatusCode = 200; // 輸入參數 登入資訊 AccountInfoData accountInfoData = new AccountInfoData() { AccountName = "Jon", Password = "******" }; // 輸出參數 驗證後結果 ExecuteResult reExcuteResult = new ExecuteResult() { IsSuccessed = false, Message = "該帳號不存在。" }; // 驗證帳號密碼 _loginService.Stub(o => o.AccountValid(Arg <AccountInfoData> .Is.Anything)).Return(reExcuteResult); // 設定httpContext _target.CurrentHttpContext = httpContext; #endregion #region act var result = _target.Login(accountInfoData) as ViewResult; #endregion #region assert // 驗證資料 Assert.AreEqual(((AccountInfoData)result.Model).AccountName, accountInfoData.AccountName); Assert.AreEqual(((AccountInfoData)result.Model).Password, accountInfoData.Password); Assert.AreEqual(((AccountInfoData)result.Model).Message, reExcuteResult.Message); #endregion }
public void AccountValidTest() { #region arrange (驗證成功) // 輸入的帳號 AccountInfoData accountID = new AccountInfoData() { UserId = 1, AccountName = "kevan", Password = "******", UserName = "******" }; List <UserDTO> reUserDTOList = new List <UserDTO>() { new UserDTO() { UserID = 1, AccountName = "kevan", Password = "******", UserName = "******", Email = "*****@*****.**" } }; UserDTO reUserDTO = new UserDTO() { UserID = 1, AccountName = "kevan", Password = "******", UserName = "******", Email = "*****@*****.**" }; string reMessage = accountID.Message; _userEfRepo.Stub(o => o.FindAccountName(Arg <string> .Is.Anything)).Return(reUserDTOList); _userEfRepo.Stub(o => o.FindAccountData(Arg <string> .Is.Anything)).Return(reUserDTO); #endregion #region act var result = _target.AccountValid(accountID); #endregion #region assert Assert.AreEqual(result.Message, reMessage); #endregion }
private void OnAccountInfoUpdateDelegate(AccountInfoData acctInfoData) { Debug.WriteLine(acctInfoData.dAvailable); if (UIDispatcher != null) { UIDispatcher.BeginInvoke(new Action(delegate { Available = acctInfoData.dAvailable; Balance = acctInfoData.dBalance; CurrMargin = acctInfoData.dCurrMargin; Commission = acctInfoData.dCommission; FrozenMargin = acctInfoData.dFrozenMargin; FrozenCash = acctInfoData.dFrozenCash; CloseProfit = acctInfoData.dCloseProfit; PositionProfit = acctInfoData.dPositionProfit; UpdateTime = DateTime.Now; })); } }
/// <summary> /// 透過帳號名稱取得帳號資料 /// </summary> /// <param name="accountInfoData"></param> /// <returns></returns> public UserDTO GetUserDataByAccountName(AccountInfoData accountInfoData) { return(_loginBO.GetUserDataByAccountName(accountInfoData)); }
/// <summary> /// 驗證登入帳號密碼 /// </summary> /// <param name="accountInfoData"></param> /// <returns></returns> public ExecuteResult AccountValid(AccountInfoData accountInfoData) { return(_loginBO.AccountValid(accountInfoData)); }
/// <summary> /// 透過帳號名稱取得帳號資料 /// </summary> /// <param name="accountInfoData"></param> /// <returns></returns> public UserDTO GetUserDataByAccountName(AccountInfoData accountInfoData) { return(_userEfRepo.FindAccountData(accountInfoData.AccountName)); }
public GetAccountInfoResult GetAccountInfo(String Request) { GetAccountInfoResult getAccountInfoResult = new GetAccountInfoResult(); String ReturnCode = ""; String Descriptioin = ""; StringBuilder Response = new StringBuilder(); Response.AppendFormat("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); #region XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(Request); XmlNode versionNode = xmlDoc.SelectNodes("/root/callinfo/version")[0]; String version = versionNode.Attributes["value"].Value; XmlNode SPIDNode = xmlDoc.SelectNodes("/root/callinfo/SPID")[0]; String SPID = SPIDNode.Attributes["value"].Value; XmlNode CustIDNode = xmlDoc.SelectNodes("/root/srchcond/conds/CUSTID")[0]; String CustID = CustIDNode.Attributes["value"].Value; XmlNode BesttoneAccountNode = xmlDoc.SelectNodes("/root/srchcond/conds/BesttoneAccount")[0]; String BA = BesttoneAccountNode.Attributes["value"].Value; #endregion int Result = 0; String ErrMsg = ""; StringBuilder strLog = new StringBuilder(); try { #region 条件校验 if (CommonUtility.IsEmpty(SPID)) { ReturnCode = Convert.ToString(ErrorDefinition.CIP_IError_Result_SPIDInValid_Code); Descriptioin = ErrorDefinition.CIP_IError_Result_SPIDInValid_Msg; Response.AppendFormat("<result returnCode = {0} msg = {1} />", ReturnCode, Descriptioin); //return Response.ToString(); getAccountInfoResult.ReturnCode = Convert.ToString(ErrorDefinition.CIP_IError_Result_SPIDInValid_Code); getAccountInfoResult.Msg = ErrorDefinition.CIP_IError_Result_SPIDInValid_Msg; return getAccountInfoResult; } //IP是否允许访问 Result = CommonBizRules.CheckIPLimit(SPID, HttpContext.Current.Request.UserHostAddress, this.Context, out ErrMsg); strLog.AppendFormat("请求方ip:{0}\r\n", HttpContext.Current.Request.UserHostAddress); strLog.AppendFormat("CheckIPLimit Result:{0},ErrMsg:{1}\r\n", Result, ErrMsg); if (Result != 0) { ReturnCode = Convert.ToString(ErrorDefinition.BT_IError_Result_BizIPLimit_Code); Descriptioin = ErrorDefinition.BT_IError_Result_BizIPLimit_Msg; //Response.AppendFormat("<result returnCode = {0} msg = {1} />", ReturnCode, Descriptioin); //return Response.ToString(); getAccountInfoResult.ReturnCode = Convert.ToString(ErrorDefinition.BT_IError_Result_BizIPLimit_Code); getAccountInfoResult.Msg = ErrorDefinition.BT_IError_Result_BizIPLimit_Msg; return getAccountInfoResult; } //接口访问权限判断 Result = CommonBizRules.CheckInterfaceLimit(SPID, "GetAccountInfo", this.Context, out ErrMsg); strLog.AppendFormat("CheckInterfaceLimit Result:{0},ErrMsg:{1}\r\n", Result, ErrMsg); if (Result != 0) { //return Result; ReturnCode = Convert.ToString(ErrorDefinition.BT_IError_Result_BizInterfaceLimit_Code); Descriptioin = ErrorDefinition.BT_IError_Result_BizInterfaceLimit_Msg; Response.AppendFormat("<result returnCode = {0} msg = {1} />", ReturnCode, Descriptioin); //return Response.ToString(); getAccountInfoResult.ReturnCode = ReturnCode; getAccountInfoResult.Msg = Descriptioin; return getAccountInfoResult; } if (CommonUtility.IsEmpty(CustID) && CommonUtility.IsEmpty(BA)) { ReturnCode = Convert.ToString(ErrorDefinition.BT_IError_Result_BizInterfaceLimit_Code); Descriptioin = "CustID和BesttoneAccount不能同时为空!"; Response.AppendFormat("<result returnCode = {0} msg = {1} />", ReturnCode, Descriptioin); //return Response.ToString(); getAccountInfoResult.ReturnCode = ReturnCode; getAccountInfoResult.Msg = Descriptioin; return getAccountInfoResult; } BesttoneAccount account = null; BesttoneAccountDAO dao = new BesttoneAccountDAO(); if (!CommonUtility.IsEmpty(CustID)) { account = dao.QueryByCustID(CustID); } if (!CommonUtility.IsEmpty(BA)) { account = dao.QueryByBestAccount(BA); } if (account == null) { ReturnCode = Convert.ToString(ErrorDefinition.BT_IError_Result_BizInterfaceLimit_Code); Descriptioin = "账户不存在!"; Response.AppendFormat("<result returnCode = {0} msg = {1} />", ReturnCode, Descriptioin); //return Response.ToString(); getAccountInfoResult.ReturnCode = ReturnCode; getAccountInfoResult.Msg = Descriptioin; return getAccountInfoResult; } //查询账户余额 AccountItem item; Result = BesttoneAccountHelper.QueryBesttoneAccount(account.BestPayAccount, out item, out ErrMsg); if (Result == 0) { AccountInfoData data = new AccountInfoData(); getAccountInfoResult.ReturnCode = "0"; getAccountInfoResult.Msg = "成.功"; data.Id = ""; data.CustID = account.CustID; data.BesttoneAccount = account.BestPayAccount; data.AccountType = item.AccountType; data.AccountStatus = item.AccountStatus; data.AccountBalance = item.AccountBalance; data.PredayBalance = item.PredayBalance; data.PremonthBalance = item.PreMonthBalance; data.AvailableBalance = item.AvailableBalance; data.UnavailableBalance = item.UnAvailableBalance; data.AvailableCash = item.AvailableLecash; data.CardNum = item.CardNum; data.CardType = item.CardType; getAccountInfoResult.data = data; //Response.AppendFormat("<Result returnCode = \"0\" msg = \"成功\">"); //Response.AppendFormat("<Data ID = \"\">"); //Response.AppendFormat("<CUSTID>{0}</CUSTID>", account.CustID); //Response.AppendFormat("<BESTTONEACCOUNT>{0}</BESTTONEACCOUNT>", account.BestPayAccount); //Response.AppendFormat("<ACCOUNTTYPE>{0}</ACCOUNTTYPE>", item.AccountType); //Response.AppendFormat("<ACCOUNTSTATUS>{0}</ACCOUNTSTATUS>", item.AccountStatus); //Response.AppendFormat("<ACCOUNTBALANCE>{0}</ACCOUNTBALANCE>", item.AvailableBalance); //Response.AppendFormat("<PREDAYBALANCE>{0}</PREDAYBALANCE>", item.PredayBalance); //Response.AppendFormat("<PREMONTHBALANCE>{0}</PREMONTHBALANCE>", item.PreMonthBalance); //Response.AppendFormat("<AVAILABLEBALANCE>{0}</AVAILABLEBALANCE>", item.AvailableBalance); //Response.AppendFormat("<UNAVAILABLEBALANCE>{0}</UNAVAILABLEBALANCE>", item.UnAvailableBalance); //Response.AppendFormat("<AVAILABLECASH>{0}</AVAILABLECASH>", item.AvailableLecash); //Response.AppendFormat("<CARDNUM>{0}</CARDNUM>", item.CardNum); //Response.AppendFormat("<CARDTYPE>{0}</CARDTYPE>", item.CardType); //Response.AppendFormat("</Data>"); //Response.AppendFormat("</Result>"); } else { ReturnCode = Convert.ToString(ErrorDefinition.BT_IError_Result_BizInterfaceLimit_Code); Descriptioin = "账户查询失败!"; //Response.AppendFormat("<result returnCode = {0} msg = {1} />", ReturnCode, Descriptioin); getAccountInfoResult.ReturnCode = ReturnCode; getAccountInfoResult.Msg = Descriptioin; } #endregion } catch (Exception e) { getAccountInfoResult.ReturnCode = "-9001"; getAccountInfoResult.Msg = e.ToString(); } //return Response.ToString(); return getAccountInfoResult; }
public void LoginTest1() { #region arrange (登入成功) // httpContext物件設定 var httpContext = FakeHttpContextManager.CreateHttpContextBase(); httpContext.Response.StatusCode = 200; // 輸入參數 AccountInfoData accountInfoData = new AccountInfoData() { AccountName = "kevan", Password = "******" }; // 輸出參數 ExecuteResult reExcuteResult = new ExecuteResult() { IsSuccessed = true }; // 透過帳號名稱所取得的帳號資訊 UserDTO reUserDTO = new UserDTO() { UserID = 1, AccountName = "kevan", Password = "******", UserName = "******", Email = "*****@*****.**" }; // 透過ID所取得腳色資料包 List <RoleDTO> reRoleDTOList = new List <RoleDTO>() { new RoleDTO() { RoleID = 1, RoleName = "Admin", Description = "最高權限" }, new RoleDTO() { RoleID = 2, RoleName = "A", Description = "A1" }, new RoleDTO() { RoleID = 3, RoleName = "B", Description = "B1" } }; // 透過ID取得該使用者所有的權限資料包 List <SecurityRoleFunctionDTO> reSRFRole1 = new List <SecurityRoleFunctionDTO>() { new SecurityRoleFunctionDTO() { Description = "首頁", Url = "Home/Index" }, new SecurityRoleFunctionDTO() { Description = "瀏覽角色管理畫面", Url = "Role/RoleManagement" }, new SecurityRoleFunctionDTO() { Description = "角色新增修改刪除畫面", Url = "Role/RoleAddEditDelete" }, new SecurityRoleFunctionDTO() { Description = "編輯角色", Url = "Role/EditRole" }, new SecurityRoleFunctionDTO() { Description = "編輯角色使用者畫面", Url = "Role/RoleUserEdit" } }; List <SecurityRoleFunctionDTO> reSRFRole2 = new List <SecurityRoleFunctionDTO>() { new SecurityRoleFunctionDTO() { Description = "首頁", Url = "Home/Index" }, new SecurityRoleFunctionDTO() { Description = "瀏覽角色管理畫面", Url = "Role/RoleManagement" }, new SecurityRoleFunctionDTO() { Description = "角色新增修改刪除畫面", Url = "Role/RoleAddEditDelete" }, new SecurityRoleFunctionDTO() { Description = "編輯角色", Url = "Role/EditRole" }, new SecurityRoleFunctionDTO() { Description = "編輯角色使用者畫面", Url = "Role/RoleUserEdit" } }; List <SecurityRoleFunctionDTO> reSRFRole3 = new List <SecurityRoleFunctionDTO>() { new SecurityRoleFunctionDTO() { Description = "首頁", Url = "Home/Index" }, new SecurityRoleFunctionDTO() { Description = "瀏覽角色管理畫面", Url = "Role/RoleManagement" }, new SecurityRoleFunctionDTO() { Description = "角色新增修改刪除畫面", Url = "Role/RoleAddEditDelete" }, new SecurityRoleFunctionDTO() { Description = "編輯角色", Url = "Role/EditRole" }, new SecurityRoleFunctionDTO() { Description = "編輯角色使用者畫面", Url = "Role/RoleUserEdit" } }; List <SecurityRoleFunctionDTO> reSRF = new List <SecurityRoleFunctionDTO>(); reSRF.AddRange(reSRFRole1); reSRF.AddRange(reSRFRole2); reSRF.AddRange(reSRFRole3); // 驗證使用者帳號密碼 _loginService.Stub(o => o.AccountValid(Arg <AccountInfoData> .Is.Anything)).Return(reExcuteResult); // 取得帳號資料 _loginService.Stub(o => o.GetUserDataByAccountName(Arg <AccountInfoData> .Is.Anything)).Return(reUserDTO); // 取得腳色資料包 _loginService.Stub(o => o.GetRoleDataByUserID(Arg <string> .Is.Anything)).Return(reRoleDTOList); // 取得功能權限 _securityService.Stub(o => o.GetSecurityRoleFunction("1")).Return(reSRFRole1); _securityService.Stub(o => o.GetSecurityRoleFunction("2")).Return(reSRFRole2); _securityService.Stub(o => o.GetSecurityRoleFunction("3")).Return(reSRFRole3); // 設定httpContext _target.CurrentHttpContext = httpContext; #endregion #region act var result = _target.Login(accountInfoData) as RedirectToRouteResult; #endregion #region assert // 驗證 Action Assert.IsTrue(string.IsNullOrEmpty(result.RouteValues["action"].ToString()) || result.RouteValues["action"].ToString() == "Index"); // 驗證 Controller Assert.IsTrue(string.IsNullOrEmpty(result.RouteValues["controller"].ToString()) || result.RouteValues["controller"].ToString() == "Home"); // 取得 Session 並驗證 var sessionInfo = _target.CurrentHttpContext.Session["LoginInfo"] as SecurityLevel; // 驗證權限資料 for (int i = 0; i < sessionInfo.SecurityRole.Count; i++) { Assert.AreEqual(sessionInfo.SecurityRole[i].RoleID, reRoleDTOList[i].RoleID); Assert.AreEqual(sessionInfo.SecurityRole[i].RoleName, reRoleDTOList[i].RoleName); Assert.AreEqual(sessionInfo.SecurityRole[i].Description, reRoleDTOList[i].Description); } for (int i = 0; i < sessionInfo.SecurityUrl.Count; i++) { Assert.AreEqual(sessionInfo.SecurityUrl[i].Url, reSRF[i].Url); Assert.AreEqual(sessionInfo.SecurityUrl[i].Description, reSRF[i].Description); } Assert.AreEqual(sessionInfo.UserData.UserId, 1); Assert.AreEqual(sessionInfo.UserData.AccountName, "kevan"); Assert.AreEqual(_target.CurrentHttpContext.Session["UserName"], "kevan"); #endregion }