/** * 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; }
/** * 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(); } } }
/** * 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; } } }