Пример #1
0
        /// <summary>
        /// 認証処理を実施します。
        /// </summary>
        /// <param name="id">入力されたログインId</param>
        /// <param name="password">入力されたパスワード</param>
        /// <returns>認証結果</returns>
        public AuthResult Auth(string id, string password)
        {
            PCSiteTraceSource.MethodStart();
            var auth = new Toyota.Gbook.WebSite.Security.Control.Authentication();

            try
            {
                var apiResult = auth.GetOneIdAuthResult(id, password);
                return(AuthResult.From(apiResult));
            }
            catch (UnauthorizedException)
            {
                PCSiteTraceSource.CheckPoint("認証APIがHTTPステータス401を返却");
                return(AuthResult.Unauthorize());
            }
            catch (NoRelationException)
            {
                PCSiteTraceSource.CheckPoint("対象のIDに紐づいたT-ConnectIDなし");
                return(AuthResult.NoRelation());
            }
        }
Пример #2
0
        /// <summary>
        /// 認可APIの結果をDataSetに格納にし、認証結果をboolで返却します。
        /// </summary>
        /// <param name="userDataSet">認証結果のデータセット</param>
        public bool AuthTConnectNavi(ResultCDAuthenticationUserDataSet userDataSet)
        {
            var  auth = new Toyota.Gbook.WebSite.Security.Control.Authentication();
            bool isTConnectNavi;

            try
            {
                isTConnectNavi = auth.SetIsTConnectNaviFlag(userDataSet);

                // 認証インタフェース処理結果コード
                SecurityResultCode = userDataSet.ReturnInformation[0].ResultCD;

                // T-ConnectNavi判定結果
                if (!userDataSet.CarInformation[0].IsIsTConnectNaviNull())
                {
                    IsTConnectNavi = userDataSet.CarInformation[0].IsTConnectNavi;
                    isTConnectNavi = (bool)IsTConnectNavi;
                }

                if (!isTConnectNavi)
                {
                    // 143:G-BOOK未契約
                    isTConnectNavi = SecurityResultCode == GBOOK_UN_CONTRACT;
                }

                if (isTConnectNavi)
                {
                    // 認証OK
                    // 接続区分巻き替え
                    for (int i = 0; i < userDataSet.CarInformation.Count; i++)
                    {
                        string conn = userDataSet.CarInformation[i].ConnectDivision;
                        if (conn == SECURITY_DCM_CONNECT_VALUE)
                        {
                            userDataSet.CarInformation[i].ConnectDivision = Common.Constants.ConnectDCM;
                        }
                        else if (conn == SECURITY_MOBILE_PHONE_CONNECT_VALUE)
                        {
                            userDataSet.CarInformation[i].ConnectDivision = Common.Constants.ConnectMobilePhone;
                        }
                    }

                    // セッション値設定
                    // 1件目のデータを取得する(2件以上のデータが存在することは想定外)
                    var carInfo    = userDataSet.CarInformation[0];
                    var memberInfo = userDataSet.MemberInformation[0];

                    HttpContext.Current.Session[SessionKey.USERDATASET]        = userDataSet.Copy();
                    HttpContext.Current.Session[SessionKey.SERVICE_DIVISION]   = carInfo.ServiceDivision;
                    HttpContext.Current.Session[SessionKey.GBML_VERSION]       = carInfo.GBML_VERSION;
                    HttpContext.Current.Session[SessionKey.CONNECT_DIVISION]   = carInfo.ConnectDivision;
                    HttpContext.Current.Session[SessionKey.TCONNECT_ID]        = memberInfo.TConnectId;
                    HttpContext.Current.Session[SessionKey.PASSWORD]           = memberInfo.Password;
                    HttpContext.Current.Session[SessionKey.INTERNAL_MEMBER_ID] = memberInfo.InternalMemberId;
                    HttpContext.Current.Session[SessionKey.MEMBER_DIVISION]    = memberInfo.MemberDivision;
                    HttpContext.Current.Session[SessionKey.IS_PRESITE_USER]    = userDataSet.MemberInformation[0].PreSiteMemberFlag == "1"; // "1"=true
                    // ESPoサイトへ渡すSession情報を格納
                    HttpContext.Current.Session[SessionKey.ESPO_MODEL]         = Constants.MODEL.MODEL_13;
                    HttpContext.Current.Session[SessionKey.IS_TERMINATED_USER] = SecurityResultCode == GBOOK_UN_CONTRACT;
                }
                else
                {
                    // 認証失敗
                    _SessionKeyList.ForEach(
                        key =>
                    {
                        if (HttpContext.Current.Session[key] != null)
                        {
                            HttpContext.Current.Session.Remove(key);
                        }
                    });
                }
            }
            catch (ApplicationException)
            {
                _SessionKeyList.ForEach(
                    key =>
                {
                    if (HttpContext.Current.Session[key] != null)
                    {
                        HttpContext.Current.Session.Remove(key);
                    }
                });
                // そのままthrow
                throw;
            }
            catch (Exception ex)
            {
                PCSiteTraceSource.AppError(ex.Message);
                _SessionKeyList.ForEach(
                    key =>
                {
                    if (HttpContext.Current.Session[key] != null)
                    {
                        HttpContext.Current.Session.Remove(key);
                    }
                });
                throw new ApplicationException(ex.Message, ex);
            }

            PCSiteTraceSource.MethodSuccess();

            return(isTConnectNavi);
        }
Пример #3
0
        /// <summary>
        /// テレマサービス情報APIの結果をDataSetにして返却します。
        /// </summary>
        /// <param name="id">入力されたログインId</param>
        /// <param name="internalMemberIds">内部会員IDのリスト</param>
        /// <returns>会員情報が設定されたDataSet</returns>
        public ResultCDAuthenticationUserDataSet GetMemberInformationWithVehicle(string internalMemberId)
        {
            var auth = new Toyota.Gbook.WebSite.Security.Control.Authentication();

            return(auth.CreateResultCDAuthenticationDataSet(internalMemberId));
        }
Пример #4
0
        /// <summary>
        /// テレマサービス情報APIの結果をDataSetにして返却します。
        /// </summary>
        /// <param name="id">入力されたログインId</param>
        /// <param name="result">認証結果</param>
        /// <returns>会員情報が設定されたDataSet</returns>
        public IList <Toyota.Gbook.WebSite.Security.Control.Authentication.Vehicle> GetVehicleList(OneIdTConnectAuthResult result)
        {
            var auth = new Toyota.Gbook.WebSite.Security.Control.Authentication();

            return(auth.CreateVehicleList(result));
        }