/**
  * isValidToken() のテストケース(エラー).
  *
  * 値が渡されてない場合
  */
 function testIsValidTokenNotParam()
 {
     $objSession = new SC_Helper_Session_Ex();
     $token = $objSession->getToken();
     // 値を渡さなければ false
     $this->assertEquals(false, $objSession->isValidToken());
 }
 /**
  * オペレーションの実行権限をチェックする
  *
  * @param string オペレーション名
  * @param array リクエストパラメータ
  * @return boolean 権限がある場合 true; 無い場合 false
  */
 protected function checkOperationAuth($operation_name, &$arrParam, &$arrApiConfig)
 {
     if (SC_Utils_Ex::isBlank($operation_name)) {
         return false;
     }
     $arrAuthTypes = explode('|', $arrApiConfig['auth_types']);
     $result = false;
     foreach ($arrAuthTypes as $auth_type) {
         $ret = false;
         switch ($auth_type) {
             case self::API_AUTH_TYPE_REFERER:
                 $ret = SC_Api_Operation_Ex::checkReferer();
                 break;
             case self::API_AUTH_TYPE_SESSION_TOKEN:
                 $ret = SC_Helper_Session_Ex::isValidToken(false);
                 break;
             case self::API_AUTH_TYPE_API_SIGNATURE:
                 $ret = SC_Api_Operation_Ex::checkApiSignature($operation_name, $arrParam, $arrApiConfig);
                 break;
             case self::API_AUTH_TYPE_CUSTOMER:
                 $ret = SC_Api_Operation_Ex::checkCustomerAccount($arrParam['login_email'], $arrParam['login_password']);
                 break;
             case self::API_AUTH_TYPE_MEMBER:
                 $ret = SC_Api_Operation_Ex::checkMemberAccount($arrParam['member_id'], $arrParam['member_password']);
                 break;
             case self::API_AUTH_TYPE_CUSTOMER_LOGIN_SESSION:
                 $objCustomer = new SC_Customer_Ex();
                 $ret = $objCustomer->isLoginSuccess();
                 break;
             case self::API_AUTH_TYPE_MEMBER_LOGIN_SESSION:
                 $ret = SC_Utils_Ex::sfIsSuccess(new SC_Session_Ex(), false);
                 break;
             case self::API_AUTH_TYPE_IP:
                 $ret = SC_Api_Operation_Ex::checkIp($operation_name);
                 break;
             case self::API_AUTH_TYPE_HOST:
                 $ret = SC_Api_Operation_Ex::checkHost($operation_name);
                 break;
             case self::API_AUTH_TYPE_SSL:
                 $ret = SC_Utils_Ex::sfIsHTTPS();
                 break;
             case self::API_AUTH_TYPE_OPEN:
                 $result = true;
                 break 2;
                 // foreachも抜ける
             // foreachも抜ける
             default:
                 $ret = false;
                 break;
         }
         if ($ret === true) {
             $result = true;
         } else {
             $result = false;
             break;
             // 1つでもfalseがあれば,その時点で終了
         }
     }
     return $result;
 }
Exemple #3
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param  boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 public function doValidToken($is_admin = false)
 {
     if ($is_admin) {
         $mode = $this->getMode();
         if ($_SERVER['REQUEST_METHOD'] == 'POST' || !SC_Utils::isBlank($mode)) {
             if (!SC_Helper_Session_Ex::isValidToken(false)) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
                 SC_Response_Ex::actionExit();
             }
         }
     } else {
         if ($_SERVER['REQUEST_METHOD'] == 'POST') {
             if (!SC_Helper_Session_Ex::isValidToken(false)) {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
                 SC_Response_Ex::actionExit();
             }
         }
     }
 }
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 function doValidToken($is_admin = false)
 {
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if (!SC_Helper_Session_Ex::isValidToken(false)) {
             if ($is_admin) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
             } else {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true);
             }
             SC_Response_Ex::actionExit();
         }
     }
 }
Exemple #5
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 function doValidToken($is_admin = false)
 {
     if ($_SERVER["REQUEST_METHOD"] == 'POST') {
         if (!SC_Helper_Session_Ex::isValidToken(false)) {
             if ($is_admin) {
                 SC_Utils_Ex::sfDispError(INVALID_MOVE_ERRORR);
             } else {
                 SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, "", true);
             }
             exit;
         }
     }
 }