using Newtonsoft.Json; using OT.COM.ArsenalDB; using OT.COM.LogisticsUtil; using OT.COM.SignalerMessage; using SoldierData; using SoldierData.syserp; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using Newtonsoft.Json.Linq; using SoldierDataEntity; using System.DirectoryServices; using System.Collections; using System.Net; namespace CounsellorBL { public partial class AuthorityService : DBService { public const string MODE = "mode"; protected CResponseMessage loginBase(CRequestMessage i_crm, otb_user i_u) { CResponseMessage crm = null; string sMsg = null; do { if (null == i_u) { sMsg = BaseExceptionWord.ex000001; //請輸入正確的帳號和密碼或該帳號無效 break; } // Add row to session string sGUID = Guid.NewGuid().ToString(); otb_session s = new otb_session(); //s.user_name = i_u.user_name; s.create_user_guid = s.modify_user_guid = i_u.guid; //s.login_ip = i_crm.ClientIP; s.guid = sGUID; Command cAddSession = Command.SetupInsertCmd(GetMasterDBTableInfo(typeof(otb_session)), s); Command cDelSession = Command.SetupDeleteCmd(GetMasterDBTableInfo(typeof(otb_session)), new WhereNode(otb_session.CN_MODIFY_DATE, WhereNode.EColumnOperation.EOT_LT, typeof(otb_session), DateTime.Now.AddHours(-1))); if (0 >= this.adbm.RunEditCmds(new List() { cDelSession, cAddSession })) { sMsg = BaseExceptionWord.ex000002;//SESSION 新增失敗 if (true == new Util().GetSettingBoolean("EnableDebug")) //ConfigurationManager.AppSettings /// Login check /// /// /// public CResponseMessage Login(CRequestMessage i_crm) { // IN CResponseMessage crm = null; string sMsg = null; string sEmprolyeeid = i_crm.DATA["user_id"].ToString(); string sPassword = i_crm.DATA["password"].ToString(); string sMethod = _fetchString(i_crm, "cmbloginmethod"); //string sIp = _fetchString(i_crm, "Ip"); string sIp = GetWebClientIp(); // 加密 //sMsg = EncryptMgr.Encrypt(sPassword, out sEnctPassword); do { QueryJson qj = new QueryJson(); List lqje = new List(); QueryJsonElement qjeA = new QueryJsonElement(); qjeA.table = otb_user.TABLENAME; qjeA.tablealias = "a"; qjeA.wherecols = new WhereNode(otb_user.CN_USER_ID, WhereNode.EColumnOperation.EOT_EQ, typeof(otb_user), sEmprolyeeid) { EQCaseSensitiveSupport = false }; qjeA.ordercols = new List>() { new Dictionary() { { otb_user.CN_CREATE_DATE, "DESC" } } }; qj.AddBlock(qjeA); Command cSelect = null; qj.MakeCommand(GetMasterDBTableInfo(typeof(otb_user)), out cSelect); otb_user uSelectItem = new otb_user(); //uSelectItem.SetDirty(tb_user.F_N_ID); otb_user u = this.adbm.RunQuerySingleORM(cSelect); if (null == u) { sMsg = BaseExceptionWord.login001; //請輸入正確的帳號和密碼 break; } // Expire if (u.active_flag != "Y") { sMsg = BaseExceptionWord.login002; //該帳號無效 break; } crm = loginBase(i_crm, u); if (crm.RESULT == EResponseResult.RR_TRUE) { crm.DATA.Add(otb_user.CN_USER_ID, u.user_id); crm.DATA.Add(otb_user.CN_USER_NAME, u.user_name); crm.DATA.Add(BLWording.ENTITYS, new List() { u }); //這裡放entity登入帳號資料 } } while (false); if (null != sMsg) { crm = new CResponseMessage(i_crm) { RESULT = EResponseResult.RR_FALSE, MSG = sMsg }; } return crm; } #region 获取web客户端ip /// /// 获取web客户端ip /// /// public static string GetWebClientIp() { string sUserIP = ""; try { if (System.Web.HttpContext.Current == null || System.Web.HttpContext.Current.Request == null || System.Web.HttpContext.Current.Request.ServerVariables == null) return ""; string CustomerIP = ""; //CDN加速后取到的IP simone 090805 CustomerIP = System.Web.HttpContext.Current.Request.Headers["Cdn-Src-Ip"]; if (!string.IsNullOrEmpty(CustomerIP)) { return CustomerIP; } CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (!String.IsNullOrEmpty(CustomerIP)) return CustomerIP; if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (CustomerIP == null) CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } else { CustomerIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } if (string.Compare(CustomerIP, "unknown", true) == 0) return System.Web.HttpContext.Current.Request.UserHostAddress; return CustomerIP; } catch { } return sUserIP; } #endregion } }