|
|
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<Command>() { cDelSession, cAddSession })) { sMsg = BaseExceptionWord.ex000002;//SESSION 新增失敗
if (true == new Util().GetSettingBoolean("EnableDebug")) //ConfigurationManager.AppSettings <compilation debug="true"...
{ //sMsg += string.Format("({0})", cAddSession.LastErrorMsg);
} break; }
// Get GUID
//decimal dFidLastInsert = (decimal)cAddSession.LastInsertIdentity;
//int nFidLastInsert = Convert.ToInt32(dFidLastInsert);
/* otb_session sFethch = new otb_session(); sFethch.SetDirty(otb_session.CN_F_S_GUID); WhereNode wn = new WhereNode(otb_session.CN_F_S_GUID, WhereNode.EColumnOperation.EOT_EQ, sGUID);
Command cWhereLastInsert = Command.SetupSelectCmd(GetMasterDBTableInfo(typeof(otb_session)), sFethch, wn); QueryDataTable qdr2 = this.adbm.RunQuery(cWhereLastInsert); DataTable dt2 = qdr2.DATA;*/
crm = new CSuccessResponseMessage("LOGIN SUCCESS", i_crm);
crm.DATA.Add(BLWording.TOKEN, sGUID); } while (false);
if (null != sMsg) { crm = new CResponseMessage(i_crm) { RESULT = EResponseResult.RR_FALSE, MSG = sMsg }; }
return crm; }
/// <summary>
/// Login check
/// </summary>
/// <param name="i_crm"></param>
/// <returns></returns>
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<QueryJsonElement> lqje = new List<QueryJsonElement>();
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<Dictionary<string, string>>() { new Dictionary<string, string>() { { 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<otb_user>(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<otb_user>() { u }); //這裡放entity登入帳號資料
}
} while (false);
if (null != sMsg) {
crm = new CResponseMessage(i_crm) { RESULT = EResponseResult.RR_FALSE, MSG = sMsg }; }
return crm; }
#region 获取web客户端ip
/// <summary>
/// 获取web客户端ip
/// </summary>
/// <returns></returns>
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
} }
|