Beispiel #1
0
 /**
  * オペレーションの実行権限をチェックする
  *
  * @param string オペレーション名
  * @param array リクエストパラメータ
  * @return boolean 権限がある場合 true; 無い場合 false
  */
 protected function checkOperationAuth($operation_name, &$arrParam, &$arrApiConfig)
 {
     if (Utils::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 = static::checkReferer();
                 break;
             case self::API_AUTH_TYPE_SESSION_TOKEN:
                 $ret = SessionHelper::isValidToken(false);
                 break;
             case self::API_AUTH_TYPE_API_SIGNATURE:
                 $ret = static::checkApiSignature($operation_name, $arrParam, $arrApiConfig);
                 break;
             case self::API_AUTH_TYPE_CUSTOMER:
                 $ret = static::checkCustomerAccount($arrParam['login_email'], $arrParam['login_password']);
                 break;
             case self::API_AUTH_TYPE_MEMBER:
                 $ret = static::checkMemberAccount($arrParam['member_id'], $arrParam['member_password']);
                 break;
             case self::API_AUTH_TYPE_CUSTOMER_LOGIN_SESSION:
                 /* @var $objCustomer Customer */
                 $objCustomer = Application::alias('eccube.customer');
                 $ret = $objCustomer->isLoginSuccess();
                 break;
             case self::API_AUTH_TYPE_MEMBER_LOGIN_SESSION:
                 $ret = Utils::sfIsSuccess(new Session(), false);
                 break;
             case self::API_AUTH_TYPE_IP:
                 $ret = static::checkIp($operation_name);
                 break;
             case self::API_AUTH_TYPE_HOST:
                 $ret = static::checkHost($operation_name);
                 break;
             case self::API_AUTH_TYPE_SSL:
                 $ret = Utils::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;
 }
Beispiel #2
0
 /**
  * POST アクセスの妥当性を検証する.
  *
  * 生成されたトランザクショントークンの妥当性を検証し,
  * 不正な場合はエラー画面へ遷移する.
  *
  * この関数は, 基本的に init() 関数で呼び出され, POST アクセスの場合は自動的に
  * トランザクショントークンを検証する.
  * ページによって検証タイミングなどを制御する必要がある場合は, この関数を
  * オーバーライドし, 個別に設定を行うこと.
  *
  * @access protected
  * @param  boolean $is_admin 管理画面でエラー表示をする場合 true
  * @return void
  */
 public function doValidToken($is_admin = false)
 {
     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
         if (!SessionHelper::isValidToken(false)) {
             if ($is_admin) {
                 Utils::sfDispError(INVALID_MOVE_ERRORR);
             } else {
                 Utils::sfDispSiteError(PAGE_ERROR, '', true);
             }
             $this->app['ecube.response.action_exit'];
         }
     }
 }