【EC-CUBE】バージョン2.12の外部連携用API機能を無効にする
こんにちは、fukasawaです。WindowsXPのサポートが終了しましたね。
最近は触る機会もあまりなかったのですが、長い間お世話になってきたので少しさみしい気もします。
さて、先日のブログでEC-CUBEの外部連携用APIについて調べました。その中で少し触れたのですが、EC-CUBEのバージョン2.13以降では外部連携用APIの機能がデフォルトで無効になっているのに対し、EC-CUBEのバージョン2.12ではデフォルトで有効になっています。
カート周りのAPIは未実装ということもあり、できることといってもEC-CUBEのバージョンを参照したり、アイテムの情報を取得するぐらいなのですが、これらの情報が誰からでも取得できてしまうという状態は、あまり望ましくないかもしれません。
実際に運用されているショップで把握していない機能が使えてしまうというのもなかなか落ち着かないと思うので、バージョン2.12で暫定的にこの機能を無効にする方法について書いてみたいと思います。
1. 管理画面のパラメータ設定に定数を追加する
API_ENABLE_FLAGという定数を定義し、管理画面からAPIの有効/無効を操作できるようにします。
DBにアクセスし以下のINSERT文を発行します。mtb_constantsテーブルにレコードが追加されます。
※値はバージョン2.13のものを参考にしています。
INSERT INTO mtb_constants(id, name, rank, remarks) VALUES ('API_ENABLE_FLAG', 'false', 1420, 'API機能を有効にする(true:する false:しない)');
[管理画面] → [システム設定] → [パラメータ設定] にアクセスするとAPI_ENABLE_FLAGという定数が追加されているので、パラメータ値に「false」が設定されていることを確認し「この内容で登録する」ボタンを押下します。
※パラメータ値が既に「false」になっていても、登録ボタンを押さないと反映されないので気をつけてください。
2. 有効/無効を振り分ける処理を追加する
/data/class_extends/api_extends/SC_Api_Operation_Ex.php に以下のメソッドを追加します。
※既にカスタマイズでcheckParam()メソッドを追加している場合は、いい感じにメソッドの内容を書き換えてください。
/**
* APIのリクエスト基本パラメーターのチェック
*
* @param object $objFormParam
* @return array $arrErr
*/
protected function checkParam($objFormParam)
{
$arrErr = parent::checkParam($objFormParam);
// API機能が有効であるかをチェック.
if (API_ENABLE_FLAG == false){
$arrErr['ECCUBE.Function.Disable'] = 'API機能が無効です。';
}
return $arrErr;
}
これでOKです。API_ENABLE_FLAGがfalseの状態でAPIにアクセスしようとすると「API機能が無効です。」というエラーが返ってきます。有効にしたい場合は管理画面からAPI_ENABLE_FLAGを「true」に設定してください。