Esempio n. 1
0
    /// <summary>
    /// 建立OTP,並將相關參數與OTP,並將Client導至Gash登入頁面
    /// </summary>
    /// <param name="str_ClientIP">Client端IP</param>
    /// <param name="str_ReturnUrl">登入成功後導回的URL</param>
    /// <param name="int_LoginMode">登入方式 1:用Gash帳號登入 2:用Gash帳號登入後,選擇遊戲帳號 3:用遊戲帳號登入 4:用體驗帳號登入</param>
    /// <param name="str_ServiceCode">遊戲的Service Code</param>
    /// <param name="str_ServiceRegion">遊戲的Region Code</param>
    /// <param name="bl_isDisplayTitle">Gash登入頁面是否顯示Gamania Title</param>
    private static void CreateOTP(string str_ClientIP, string str_UserAgent, string str_ReturnUrl, int int_LoginMode, string str_ServiceCode, string str_ServiceRegion, string str_isDisplayTitle)
    {
        string str_OTP = string.Empty;

        //建立OTP

        GASHv35LoginWS ws = new GASHv35LoginWS();
        WSResult struct_Result = new WSResult();

        try
        {
            string strMergeFlow = ConfigurationManager.AppSettings["BeanFun_MergeList"] ?? "0";
            if (strMergeFlow == "1")
                struct_Result = ws.CreateOTPForMergeList(str_ClientIP, str_UserAgent, str_ReturnUrl, int_LoginMode, str_ServiceCode, str_ServiceRegion);
            else
                struct_Result = ws.CreateOTP(str_ClientIP, str_UserAgent, str_ReturnUrl, int_LoginMode, str_ServiceCode, str_ServiceRegion);

        }
        catch
        {
            SDCodeCheck.JSUtil.AlertMsg("系統忙碌中,請稍後在試! (Error(0)");
            return;
        }
        ws.Dispose();

        if (struct_Result.ResultCode == 0)
        {
            str_OTP = struct_Result.ResultDesc;

            //第二步將相關參數與OTP傳至登入頁面
            string str_ignoreChooseFlag = ConfigurationManager.AppSettings["igoreChooseFlag"] ?? "1";
            string _isalphaFlag = ConfigurationManager.AppSettings["IsaphaFlag"] ?? "0";

            string _strLoginUrl = string.Empty;
            string strGashLoginUrl=ConfigurationManager.AppSettings["GASHLoginUrl"]?? string.Empty;
            string strAlphaGashLoginUrl = ConfigurationManager.AppSettings["alphaGASHLoginUrl"] ?? strGashLoginUrl;

            string str_isRedirectTo = ConfigurationManager.AppSettings["BeanFun_RedirectFlag"] ?? string.Empty;
            if (str_isRedirectTo.ToLower() == "v30" || str_isRedirectTo.ToLower() == "v35")
                str_isRedirectTo = "&redirectto=" + str_isRedirectTo;
            else
                str_isRedirectTo = string.Empty;

            if (strGashLoginUrl == string.Empty || strAlphaGashLoginUrl == string.Empty)
                SDCodeCheck.JSUtil.Alert("系統忙碌中,請稍候再試! Error(2)");

            if (_isalphaFlag == "1")
                _strLoginUrl = strAlphaGashLoginUrl;
            else
                _strLoginUrl = strGashLoginUrl;

            string str_Url = string.Format("{0}?ClientIP={1}&OTP={2}&pageFlag={3}&ignoreChooseFlag={4}{5}", _strLoginUrl, str_ClientIP, str_OTP, str_isDisplayTitle, str_ignoreChooseFlag, str_isRedirectTo);
            HttpContext.Current.Response.Redirect(str_Url, true);
        }
        else
        {
            SDCodeCheck.JSUtil.AlertMsg("系統忙碌中,請稍候再試! Error(1)");
            return;
        }
    }
Esempio n. 2
0
    protected void ValidGashLogin()
    {
        //2009/12/02 INX新增
        if (_IsWebSiteStop == "1" && SDCodeCheck.Valid.isDate(_StopStartDate) && SDCodeCheck.Valid.isDate(_StopStartDate))
        {
            if (System.DateTime.Now >= Convert.ToDateTime(_StopStartDate) && System.DateTime.Now <= Convert.ToDateTime(_StopEndDate))
            {
                Session.Clear();
                SDCodeCheck.JSUtil.AlertCloseMsg(_StopAlertMessage);
                return;
            }
        }
        //====================

        if (str_ServiceCode == string.Empty || str_ServiceRegion == string.Empty)
        {
            SDCodeCheck.JSUtil.AlertCloseMsg("系統發生異常,請聯絡客服人員!!");
            return;
        }
        string str_LoginMode = ConfigurationManager.AppSettings["LoginMode"] ?? "0";
        int _intGetLoginMode = int.Parse(str_LoginMode);

        if (int_LoginMode == 0)
        {
            if (_intGetLoginMode <= 0 || _intGetLoginMode > 4)
            {
                SDCodeCheck.JSUtil.AlertCloseMsg("登入型別,請聯絡客服人員!");
                return;
            }
            else
            {
                int_LoginMode = _intGetLoginMode;
            }

        }

        if (Context.Session != null)
        {
            string str_OTP2 = Request.Form["OTP2"] ?? string.Empty;

            string strUserIP=string.Empty;

            if (_stralphaFlag == "1")
                strUserIP = _stralphaUserIP;
            else
                strUserIP = HttpContext.Current.Request.ServerVariables["Remote_Addr"];

            if (str_OTP2 != "")//有OTP2
            {
                string strUserAgent=Request.UserAgent ?? string.Empty;
                string strGashVersion=Request.Form["gashVersion"] ??"30";
                GASHv35LoginWS ws= new GASHv35LoginWS();

                WSResult _wsResult = new WSResult();
                int _intSecResult = 0;

                try
                {
                    _wsResult = ws.CreateSecretCode(str_OTP2, strUserIP, strUserAgent, strGashVersion);
                    if (_wsResult.ResultCode == 0)
                    {
                        string strSecCode = _wsResult.ResultDesc;
                        WSResult_UserData wsUserData = ws.GetUserData(str_OTP2, strSecCode);
                        if (wsUserData.ResultCode == 0)
                        {
                            _intSecResult = 1;
                            str_GashAccount = wsUserData.MainAccountID;
                            str_GameAccount = wsUserData.ServiceAccountID;
                            str_GashRegion = wsUserData.Region;
                            if (CommonGashUserData == null)
                            {
                                CommonGashUserData = new GashUserData();
                                this.CommonGashUserData.MainAccountID = wsUserData.MainAccountID;
                                this.CommonGashUserData.ServiceAccountID = wsUserData.ServiceAccountID;
                                this.CommonGashUserData.MainAccountSN = wsUserData.MainAccountSN;
                                this.CommonGashUserData.ServiceAccountSN = wsUserData.ServiceAccountSN;
                                this.CommonGashUserData.ServiceAccountDisplayName = wsUserData.ServiceAccountDisplayName;
                                this.CommonGashUserData.GashVersion = wsUserData.GashVersion;
                                this.CommonGashUserData.ServerIndex = wsUserData.ServerIndex;
                                this.CommonGashUserData.AuthType = wsUserData.AuthType;
                                this.CommonGashUserData.MainAccountType = wsUserData.MainAccountType;
                                this.CommonGashUserData.Region = wsUserData.Region;
                            }

                        }
                        else
                        {
                            _intSecResult = -2;
                        }

                    }
                    else
                        _intSecResult = -1;
                }
                catch
                {
                    _intSecResult = -3;
                }
                ws.Dispose();

                if (_intSecResult == 1)
                {
                    Session["GashAccount"] = str_GashAccount;
                    Session["GameAccount"] = str_GameAccount;
                    Session["GashRegion"] = str_GashRegion;
                    Session["CommonGashUserData"] = CommonGashUserData;
                }
                else
                {
                    SDCodeCheck.JSUtil.AlertSussTranscation("登入驗證失敗,請重新登入!", Request.Url.AbsoluteUri.ToString());
                    return;
                }
            }
            else//沒有OTP2
            {
                //判斷是否有登入
                if ((Session["GashAccount"] == null) || (Session["GameAccount"] == null) || (Session["GashRegion"] == null) || Session["CommonGashUserData"]==null)
                {
                    string schema = ConfigurationManager.AppSettings["WEB_Protocol"] ?? "http://";
                    string str_ReturnUrl = Request.Url.AbsoluteUri.ToString();
                    if(_LoginTimeTick=="1") str_ReturnUrl=str_ReturnUrl+"?TimeTickCode=" + DateTime.Now.Ticks.ToString();

                    if (schema.ToLower() == "https://")
                    {
                        str_ReturnUrl = str_ReturnUrl.Replace("http://", "https://");
                    }

                    string str_UserAgent = Request.UserAgent ?? string.Empty;
                    CreateOTP(strUserIP, str_UserAgent, str_ReturnUrl, int_LoginMode, str_ServiceCode, str_ServiceRegion, isDisplayTitle);
                }
                else
                {
                    str_GashAccount = (string)Session["GashAccount"] ?? string.Empty;
                    str_GameAccount = (string)Session["GameAccount"] ?? string.Empty;
                    str_GashRegion = (string)Session["GashRegion"] ?? string.Empty;
                    CommonGashUserData = (GashUserData)Session["CommonGashUserData"];
                }
            }

            //檢查是否有限定特定地區玩家才能參加
            if (str_GashRegion != string.Empty && str_SetUserGashRegion != string.Empty)
            {
                if (str_GashRegion.ToUpper() != str_SetUserGashRegion.ToUpper())
                {
                    Session["GashAccount"] = null;
                    Session["GameAccount"] = null;
                    Session["GashRegion"] = null;
                    SDCodeCheck.JSUtil.AlertCloseMsg("您所在的地區不符合參加本活動的資格唷!");
                    return;
                }
            }

        }
        else
        {
            SDCodeCheck.JSUtil.AlertCloseMsg("系統發生不可預期的錯誤,請稍後再試!");
            return;
        }
    }